我正在创建自定义弹出窗口背景,因此我将UIPopoverBackground抽象类子类化。在创建布局功能时,我遇到了放置和旋转背景箭头的问题。
第一张照片显示所需位置的箭头。在下面的代码中,我计算了我想要的原点,但是旋转似乎已经将图像的新位置转移到了大约11点的边。正如你所看到的,我创建了一个黑客解决方案,我将箭头移动了11个点。但这仍然没有掩盖我在数学技能上有一个空洞的事实。如果有人愿意向我解释这里发生了什么,我将永远感激不尽。什么也不错的是一个不涉及魔术数字的解决方案,以便我可以使用向上,向下和向右箭头将此解决方案应用于案例
#define ARROW_BASE_WIDTH 42.0
#define ARROW_HEIGHT 22.0
case UIPopoverArrowDirectionRight:
{
width -= ARROW_HEIGHT;
float arrowCenterY = self.frame.size.height/2 - ARROW_HEIGHT/2 + self.arrowOffset;
_arrowView.frame = CGRectMake(width,
arrowCenterY,
ARROW_BASE_WIDTH,
ARROW_HEIGHT);
rotation = CGAffineTransformMakeRotation(M_PI_2);
//rotation = CGAffineTransformTranslate(rotation, 0, 11);
_borderImageView.frame = CGRectMake(left, top, width, height);
[_arrowView setTransform:rotation];
}
break;
答案 0 :(得分:2)
好吧,如果围绕箭头视图的中心(原样)应用旋转,则会在箭头的左旋后方留下(ARROW_BASE_WIDTH - ARROW_HEIGHT) / 2
的间隙,这是你必须补偿的因为,似乎。通过将箭头视图的中心偏移这么多,它应该重新对齐。