UIBarButtonItemをnavigationItem.leftBarButtonItemまたはnavigationItem.rightBarButtonItemとして使用するだけでは、UIBarButtonItemがUIViewを継承しないため、ジオメトリプロパティを直接取得することはできませんが、最終的にトリッキーメソッドを使用してジオメトリプロパティを取得できます。
これは残っているシンプルなViewControllerを、右UIBarButtonItemのhierachyです:
UINavigationButtonあなたのターゲットである、そのRECTを取得し、あなたが必要なものの中心を得ることができます。
- (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