2011-01-27 12 views
0

UINavigationItemの右側に表示されているボタンの代わりにUISearchBarを表示しようとしています。私はこのコードを使用しています:UINavigationItemの右側にUISearchBarを表示するにはどうすればよいですか?

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    UISearchBar *searchBar = [[UISearchBar alloc] init]; 
    UIBarButtonItem *navRight = [[UIBarButtonItem alloc] initWithCustomView:searchBar]; 
    [[self navigationItem] setRightBarButtonItem:navRight]; 

    [searchBar release]; 
    [navRight release]; 
} 

ただし、表示される検索バーの幅はわずかです。私はそれをもっと広くする必要があります。

私はこれについて間違った方法をしていますか?それはすべて可能ですか?

+0

CGFrameを使用してフレームを定義するか、または可能であればIB – Robin

答えて

2

ある時点でUISearchBarのフレームを設定する必要があります。

e.x。

UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 200, 20)]; 

EDIT:ボタン風のアーティファクトについてUISearchBar

の下であなたがUISearchBar下参照ボタン-yの事は実際にUISearchBarの背景要素ではなく、検索の結果でありますバーは重複しています。UIBarButtonItemこれを隠すための良い方法ではないように思われます(私が誰かが私にそっくりだと願ってもらいたいです)。 、そしてより多くの頭痛の可能性があります。

EDIT 2:別の潜在的な解決策

また、(ナビゲーションバーの高さ)44にごUISearchBarのフレームの高さを設定することができ、その後、バックグラウンドは、ナビゲーションバーとうまく溶け込む必要があります。 thisに基づいて私は最近見ました。

+0

を使用して追加することで、UIBarButtonItemの幅を変更できます。ありがとうございます!スタックオーバーフローの岩。その下にボタンを隠す方法はありますか? – Ovesh

関連する問題