我正在创建一个自定义的弹出框背景,所以我继承了 UIPopoverBackground 抽象类。在创建布局函数时,我遇到了放置和旋转背景箭头的问题。
第一张图片显示了所需位置的箭头。在下面的代码中,我计算了我想要的原点,但旋转似乎已经将图像的新位置平移到一边大约 11 点。如您所见,我创建了一个 hack 解决方案,我将箭头移动了 11 个点。但这仍然不能掩盖我在数学技能上存在漏洞的事实。如果有人愿意向我解释这里发生了什么,我将永远感激不已。还有一个不涉及魔数(Magic Number)的解决方案会很好,这样我就可以将此解决方案应用于带有向上、向下和向右箭头的情况
#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;
最佳答案
好吧,如果围绕箭头 View 的中心应用旋转(按原样),则会在旋转后左侧留下 (ARROW_BASE_WIDTH - ARROW_HEIGHT)/2
的间隙箭头,这似乎是你必须补偿的。通过将箭头 View 的中心偏移这么多,它应该会重新对齐。
关于ios - 变换旋转后定位 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14410565/