К сожалению, нет простого способа определить положение UIBarButtonItem. UIBarButtonItem - это, по сути, NSObject, который выполняет только две вещи: описывает внешний вид кнопки панели инструментов и передает события в назначенный селектор цели / действия.
Теперь, учитывая, что все кнопки являются подпредставлениями UIToolbar, и все события кнопок направляются через их соответствующие UIBarButtonItems, довольно просто зацикливаться на всех подпредставлениях вашего UIToolbar, и когда вы находите кнопку, целью которой является ваша UIBarButtonItem, просто получите кадр этой кнопки. Какой-то код:
UIToolbar *toolbar = <your toolbar>;
UIBarButtonItem *barButtonItem = <your item>;
UIButton *button = nil;
for (UIView *subview in toolbar.subviews) {
if ([subview isKindOfClass:[UIButton class]]) {
for (id target in [(UIButton *)subview allTargets]) {
if (target == barButtonItem) {
button = (UIButton *)subview;
break;
}
}
if (button != nil) break;
}
}
CGRect frame = button.frame;