使用以下代碼來查找iphone的方向,然後設置相應的SearchBar框架。在ViewDidLoad中設置SearchBar(縱向模式)的框架。
- (void)viewDidLoad {
[super viewDidLoad];
UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(-5.0, 0.0, 320.0, 44.0)];
UIView *searchBarView = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 310.0, 44.0)];
searchBar.delegate = self;
[searchBarView addSubview:searchBar];
self.navigationItem.titleView = searchBarView;
}
-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation duration:(NSTimeInterval)duration {
if (interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown) {
UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(-5.0, 0.0, 320.0, 44.0)];
UIView *searchBarView = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 310.0, 44.0)];
searchBar.delegate = self;
[searchBarView addSubview:searchBar];
self.navigationItem.titleView = searchBarView;
}
else
{
UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(-5.0, 0.0, 480.0, 44.0)];
UIView *searchBarView = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 470.0, 44.0)];
searchBar.delegate = self;
[searchBarView addSubview:searchBar];
self.navigationItem.titleView = searchBarView;
}
}
它一定會幫助你。
不幸的是,這並沒有幫助。你總是將身高設置爲44分。但橫向模式下的navigationController的高度爲32點。像我這樣需要searchBar高度30點或更少(1點頂部/底部邊距)。 – 2012-01-31 11:26:18
改變searchBar的高度,你可以在這段代碼的其他部分查看這個searchBar的高度UIView * searchBarView = [[UIView alloc] initWithFrame:CGRectMake(0.0,0.0,470.0,44.0)]; – 2012-01-31 11:29:34
不,這也沒有幫助。顯然,searchBar的高度不能改變...... – 2012-01-31 12:00:36