UIBarButtonItem을 navigationItem.leftBarButtonItem 또는 navigationItem.rightBarButtonItem으로 사용하는 경우 UIBarButtonItem이 UIView를 상속하지 않기 때문에 직접 지오메트리 속성을 가져올 수 없지만 결국 까다로운 메서드를 사용하여 도형 속성을 얻을 수 있습니다.
UINavigationButton 당신의 목표는 RECT를 얻을 당신은 당신이 필요로 중심을 얻을 수 있습니다 :
이
은 남아있다 간단한의 ViewController과 오른쪽 UIBarButtonItem의 hierachy입니다.
- (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