如何获得UIBarButtonItem中心位置

时间:2016-10-08 11:48:55

标签: ios swift

我正在做一些自定义视图控制器转换,我希望我的转换从按下的按钮的中心开始。

对于UIButton,我可以这样做:

myCustomTransition.startingPoint = buttonPressed.center

但是,如果我想使用UIBarButtonItem,如何实际告诉我的转换是从按钮的中心开始,因为我在{{上看不到任何center属性1}}。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

如果您只使用UIBarButtonItem作为navigationItem.leftBarButtonItem或navigationItem.rightBarButtonItem,则无法直接获取几何属性,因为UIBarButtonItem不会继承UIView,但您最终可以通过使用棘手的方法获取几何属性

这是一个左右UIBarButtonItem的简单ViewController的层次结构:

enter image description here

UINavigationButton 是你的目标,得到它的矩形你可以得到你需要的中心。

- (void)handleItemPressed {
UIView *targetView = nil;
for (UIView *subView in self.navigationController.navigationBar.subviews) {
    if ([subView isKindOfClass:NSClassFromString(@"UINavigationButton")]) {
        for (UILabel *label in subView.subviews) {
            if ([label isKindOfClass:[UILabel class]]) {
                if ([label.text isEqualToString:"right"]) {
                    targetView = subView;
                    break;
                }
            }
        }
    }
}

CGRect rect = [targetView convertRect:targetView.frame toView:self.view];
CGPoint center_you_need = CGPointMake(CGRectGetMidX(rect), CGRectGetMidY(rect));
}

如果您使用customeView,只需将customeView的框架转换为该点。