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

  • Best Quality Cartoons

    Best Quality

    10 ŞUBAT 2014
  • picster

    picster

    20 NİSAN 2006
  • WestsideMrArO

    WestsideMrAr

    6 EKİM 2010