SORU
8 HAZİRAN 2010, Salı


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
14 HAZİRAN 2010, PAZARTESİ


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Chuck Testa

    Chuck Testa

    14 AĞUSTOS 2011
  • eHow

    eHow

    27 NİSAN 2006
  • kev5124

    kev5124

    9 Kasım 2008