我正在做一些自定义视图控制器转换,我希望我的转换从按下的按钮的中心开始。
对于UIButton
,我可以这样做:
myCustomTransition.startingPoint = buttonPressed.center
但是,如果我想使用UIBarButtonItem
,如何实际告诉我的转换是从按钮的中心开始,因为我在{{上看不到任何center
属性1}}。
有什么建议吗?
答案 0 :(得分:1)
如果您只使用UIBarButtonItem作为navigationItem.leftBarButtonItem或navigationItem.rightBarButtonItem,则无法直接获取几何属性,因为UIBarButtonItem不会继承UIView,但您最终可以通过使用棘手的方法获取几何属性
这是一个左右UIBarButtonItem的简单ViewController的层次结构:
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的框架转换为该点。