に似た外観を維持するために苦労しています私がしたことに似た何かをしたいと思うようです。だからここ
は、私はそれをどうやったのか、それはハックと呼ばれることもあるが、それは魔法のように動作します:)
まずあなたは、このようにインターフェイスビルダーでそれを設定する必要があります。
検索はツールバーの子ではなく、代わりにツールバーの子であることに注意してください。
検索バーには、「クリアカラー」の背景と、柔軟な左右、幅の自動調整マスクが必要です。
黒い背景を持つ1ピクセルのラベルをツールバーの下に置きます。 [x = 0、y = 44、width = 320またはframe width、height = 1]、また、左右の幅を自動調整するマスクを柔軟に設定できます。これは、検索ディスプレイコントローラーがテーブルを表示した後に、ビュー。私が何を意味するのか理解することなくそれを試してみてください。
ツールバーのアイテムはセットアップしておく必要がありますので、ツールバーアイテムは必ずセットアップしてください。
とコードのために...
あなたが検索を開始するとき、今:
- (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];
}
をあなたはこれにより
- (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];
}];
}
を検索終了時、私は素敵なアニメーションで、次を得ます: )
UISearchBarをカスタマイズしますか?それは質問ですか? –
私は2つの質問があると思います: 1.私はUISearchDisplayControllerを付けている場合、UIToolbarにUISearchBarを埋め込むべきではありませんか? 2. UISearchDisplayControllerでUISearchBarの外観を修正すると、これがどのように行われるのですか?現在は再描画され、再配置され、UIToolbarのUISearchBarの外観は保持されません – Rammeln