2011-06-15 19 views
8

ait ve üst alt dokunmak için izin verin:Droplr iPhone uygulaması bir göz atın bir UIBarButtonItem UINavigationBar

enter image description here

Bildirimi UIBarButtonItem s sağ, sol, üst ve alt dokunmak mümkün olduğu kadar ekran/gezinme çubuğu Benzer bir şey elde edebilirsiniz nasıl

? Burada örnek bir UIBarButton yapmak ve sağ öğeye ayarlayın açıklanmıştır:

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
[button setImage:image forState:UIControlStateNormal];  
button.frame= CGRectMake(0.0, 0.0, image.size.width, image.size.height); 
[button addTarget:self action:action forControlEvents:UIControlEventTouchUpInside]; 
UIBarButtonItem *bb = [[[UIBarButtonItem alloc] initWithCustomView:button]autorelease]; 
[self.navigationItem setRightBarButtonItem:bb animated:YES]; 

Ancak, hizalanmış değil haktır ve üst & alt gelen marjı biraz sahiptir. Görüntü boyutum doğru (44px) ve bir çeşit kareye sığması için küçülüyor gibi görünüyor.

Peki, bunu nasıl yapabilirim?


Düzenleme: Hata, alt/üst aralık benim hatamdı. Ancak, bar düğmesinin sol/sağ tarafıyla aynı hizada nasıl hizalanacağını anlayamıyorum. Ne demek ne:

enter image description here

Ben görüntü ekler ayarlama çalıştı (çirkin düğmesi için üzgünüm, bu sadece bir testti), ancak hiçbir şey görünmüyordu.

cevap

11
UIView *rightview = [[UIView alloc] initWithFrame:CGRectMake(0,0,30,30)]; 



UIButton *searchbutton = [[UIButton alloc] initWithFrame:CGRectMake(2,2,50, 30)]; 
[searchbutton setImage:[UIImage imageNamed:@"some-pic.png"] forState: UIControlStateNormal]; 
[rightview addSubview:searchbutton]; 


UIBarButtonItem *customItem = [[UIBarButtonItem alloc] initWithCustomView:rightview]; 
self.navigationItem.rightBarButtonItem = customItem; 
[customItem release]; 

rightBarButtonItem için bir customView kullanıyorum ve doğru şekilde hizaladım. Sadece

+0

harika çalıştı ... Ben yüksek sayılara ilave testler için, koordinatı x teşekkür CGRectMake-Numaraları ile biraz deneyin! Yani –

+2

, esasen yerleştirdiğiniz görünümleri ve 'offset' marjı iç görünümü yerinden. İçerilen görünüm clipToTounds = NO olarak ayarlanmalıdır, ancak varsayılan değer bu mu? –

+0

Bu teknik, başlıkta adı geçen görünümünün 'en fazla uygulanan bir genişliğe' üstesinden gelmek için de çalışır: her ikisi de sol ve sağ öğeler mevcut olduğunda, başlıkta adı geçen genişliğindeki 132 noktalara kısıtlanır, bulundu. Bir görünümde bir görüntü görünümü kullanmak onu sabitledi. –