2012-09-06 17 views
6

UISoolbar'da UIBarButtonItem olan bir UISearchBar ile UISearchDisplayController kullanmayı denediniz mi?iOS - UISearchBis with UISearchBar ile UIToolbar'da UIBarButtonItem'i kullanıyor

Bunu nasıl başarılı yapılacağına dair ipuçlarını takdir ediyorum. Arama kontrolör ancak, UISearchBar yeniden çizer ve ben Genellikle bir araç çubuğu içine bir arama çubuğu koymak istemiyorum UIToolbar

+0

öylesine .. UISearchBar'ı özelleştirmek ister misiniz? Bu soru mu? –

+0

Sanırım iki sorum var: 1. UISearchDisplayController ekliyorsam UISearchBar'ı UIToolbar'a yerleştirmemeliyim? 2. UISearchDisplayController'daki UISearchBar'ın görünümü, bu işlemin nasıl yapıldığını belirlediğinde giderilebilir mi? Şu anda yeniden çizildi ve yeniden konumlandırıldı ve UIToolbar'daki UISearchBar görünümünü koruyor – Rammeln

cevap

5

benzer bir görünüm sağlamak için mücadele ediyorum açılır anda her

, bu Yaptığım şeye benzer bir şey yapmak istiyorsun. Yani burada

nasıl yaptığımı, bir hack olarak adlandırılabilir, ancak böyle bir arayüz oluşturucu kurmak zorunda çekicilik :)

Birinci gibi çalışır:

enter image description here

Aramanın, araç çubuğunun alt öğesi olmadığına dikkat edin, bunun yerine yukarıdadır.

Arama çubuğunda "açık renk" arka planı ve esnek sol, sağ ve genişlikli otomatik oluşturma maskeleri bulunmalıdır.

Araç çubuğunun altında siyah arka planlı 1 pikseli bir etiket koyarsınız. [x = 0, y = 44, genişlik = 320 veya çerçeve genişliği, yükseklik = 1], aynı zamanda esnek sol, sağ ve genişlik otomatikleştirici maskeler. Bu, arama ekranı denetleyicisi tabloyu gösterdikten sonra aldığınız bir görünen pikseli gizlemek içindir görünüm. Ne demek istediğimi anlamak için onsuz dene.

Herhangi bir araç çubuğu öğesi ayarladınız ve bunlara ihtiyaç duyacağınız için bunlar için çıkışlara sahip olduğunuzdan emin olun.

- (void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller 
{ 
    // animate the search bar to the left ie. x=0 
    [UIView animateWithDuration:0.25f animations:^{ 
     CGRect frame = controller.searchBar.frame; 
     frame.origin.x = 0; 
     controller.searchBar.frame = frame; 
    }]; 
    // remove all toolbar items 
    [self.toolbar setItems:nil animated:YES]; 
} 

sen güzel bir animasyon ile aşağıdaki olsun Bununla

- (void)searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller 
{ 
    // animate search bar back to its previous position and size 
    // in my case it was x=55, y=1 
    // and reduce its width by the amount moved, again 55px 
    [UIView animateWithDuration:0.25f 
          delay:0.0f 
         // the UIViewAnimationOptionLayoutSubviews is IMPORTANT, 
         // otherwise you get no animation 
         // but some kind of snap-back movement 
         options:UIViewAnimationOptionLayoutSubviews 
        animations:^{ 
         CGRect frame = self.toolbar.frame; 
         frame.origin.y = 1; 
         frame.origin.x = 55; 
         frame.size.width -= 55; 
         controller.searchBar.frame = frame; 
        } 
        completion:^(BOOL finished){ 
         // when finished, insert any tool bar items you had 
         [self.toolbar setItems:[NSArray arrayWithObject:self.currentLocationButton] animated:YES]; 
        }]; 
} 

arama end:

Eğer arama başlatmak

kodu için şimdi

ve

...:)

enter image description here

enter image description here