Purtroppo, non esiste un modo semplice per determinare la posizione di un UIBarButtonItem. Un UIBarButtonItem è essenzialmente un NSObject che fa solo due cose: descrive l'aspetto di un pulsante della barra degli strumenti e inoltra gli eventi al target designato/selettore di azioni.
Ora, dato che tutti i pulsanti sono sottoview di UIToolbar, e tutti gli eventi di pulsante vengono instradati attraverso i rispettivi UIBarButtonItems, è piuttosto banale scorrere tutte le sottoview della UIToolbar e quando si trova un pulsante il cui target è quello di UIBarButtonItem , ottieni solo la cornice di quel pulsante. Alcuni Codice:
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;
fonte
2011-11-25 21:36:33
Questo non sembra funzionare per me in iOS 5. – Jon
Funziona se si sostituisce UIButton con UIControl. –
Risposta modificata per cambiare UIButton in UIControl. –