0

我正在创建一个自定义弹出框背景,因此我将 UIPopoverBackground 抽象类子类化。在创建布局函数时,我遇到了放置和旋转背景箭头的问题。

第一张图片显示了所需位置的箭头。在下面的代码中,我计算了我想要的原点,但旋转似乎已经将图像的新位置平移了大约 11 个点。如您所见,我创建了一个 hack 解决方案,将箭头移动了 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;
4

1 回答 1

2

好吧,如果围绕箭头视图的中心应用旋转(按原样),则会(ARROW_BASE_WIDTH - ARROW_HEIGHT) / 2在箭头的左旋转后留下一个间隙,这似乎是您必须补偿的。通过将箭头视图的中心偏移这么多,它应该重新对齐。

于 2013-01-19T06:50:34.593 回答