カスタム ポップオーバー バックグラウンドを作成しているので、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;