दुर्भाग्य से, UIBarButtonItem की स्थिति निर्धारित करने का कोई आसान तरीका नहीं है। एक UIBarButtonItem अनिवार्य रूप से एक NSObject है जो केवल दो चीजें करता है: टूलबार बटन के स्वरूप और अनुभव का वर्णन करें, और नामित लक्ष्य/क्रिया चयनकर्ता को आगे की घटनाओं का वर्णन करें।
अब, यह देखते हुए कि सभी बटन UIToolbar की subviews हैं, और सभी बटन घटनाओं उनके संबंधित UIBarButtonItems के माध्यम से रूट रहे हैं, यह पाश करने के लिए काफी तुच्छ अपने UIToolbar के सभी subviews के माध्यम से है और जब आप एक बटन जिसका लक्ष्य अपने 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;
स्रोत
2011-11-25 21:36:33
यह आईओएस 5 में मेरे लिए काम नहीं करता प्रतीत होता है। – Jon
यह यूआईकंट्रोल के साथ यूआईबटन को प्रतिस्थापित करता है तो यह काम करता है। –
UIButton को UIControl में बदलने के लिए संपादित उत्तर। –