Pencerede UİBarButtonİtem çerçeve anlamaya?
UIBarButtonItem
kare bir özellik gibi bir şey yok yani UIView
, kapsamaz.
Ama böyle bir şey CGRect
çerçeve, uygulama UIWindow
göre.
CEVAP
private APIs kullanmayı seviyorsunuz? Evet
UIView* view = thatItem.view;
return [view convertRect:view.bounds toView:nil];
Elbette kimse Yakışıklı gösterirken istiyor. Birdaha fazla güvenilmezyöntem ve de belgesiz özellikleri kullanır, ama Apple'ın testi geçecek, subviews ilgili düğme öğeyi aramak için döngü.
NSMutableArray* buttons = [[NSMutableArray alloc] init];
for (UIControl* btn in theToolbarOrNavbar.subviews)
if ([btn isKindOfClass:[UIControl class]])
[buttons addObject:btn];
UIView* view = [buttons objectAtIndex:index];
[buttons release];
return [view convertRect:view.bounds toView:nil];
index
.items
, dizideki bar item dizintüm boş öğeler çıkardıktan sonra. Buvarsayardüğmeleri olmayabilir artırmak amacıyla düzenlenmiştir. Daha güvenilir bir yöntem olacaktırsıralama.origin.x
değerini artırmak buttons
dizi. Elbette bu halavarsayarçubuğu düğmesi öğesini UİControl sınıf devralır ve yeniden olmayabilir nav-bar/araç çubuğu, doğrudan subviews vardır.
Gördüğünüz gibi, belgelenmemiş özellikleri ile ilgili birçok belirsizlik vardır. Ancak, sadece parmak sağ altında bir şey açılır mı? Bu UİBarButtonİtem .action
form seçici:
-(void)buttonClicked:(UIBarButtonItem*)sender event:(UIEvent*)event;
notolayargüman — touch pozisyonu ile elde edebilirsiniz
[[event.allTouches anyObject] locationInView:theWindow]
ya da düğme görünümü
[[event.allTouches anyObject] view]
Bu nedenle, subviews yineleme ya da yapmak istediğiniz şey için belgelenmemiş özelliklerini kullanmaya ihtiyacı yok.
asansör neden çerçeve kuracağınız bilg...
&; Güvenli olmayan JavaScript URL ile ...
Enjeksiyon Çerçeve Python Bağımlılık...
Nasıl tuval içindeki animasyon çerçeve...
Nasıl yeni bir pencerede bir bağlantı ...