Если вы просто используете UIBarButtonItem, как navigationItem.leftBarButtonItem или navigationItem.rightBarButtonItem, вы не можете напрямую попасть геометрии свойства, потому что UIBarButtonItem не наследует UIView, но в конечном итоге вы можете получить геометрию свойство, используя хитрый метод.
Это иерархия простой ViewController что левый и правый UIBarButtonItem:
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 в точку.
Вам нужно разместить кнопку в центре навигационной панели, не так ли? – vaibhav
@vaibhav: нет, моя кнопка справа, мне просто нужно знать ее позицию, но из того, что я читаю, нет никакого способа получить доступ к границам на UIBarButtonItem. – Kobe
в порядке, если вы просто разместите 'UIView' в центре навигационной панели и разворачиваете его до конца вправо и влево, а затем переходите для получения границ. – vaibhav