2017-09-25 22 views
0

我正在iOS應用程序上工作。它有搜索欄和右欄按鈕項目(幾個按鈕)。如何垂直對齊UISearchBar和右鍵欄按鈕項

的東西被初始化如下:

UISearchController *searchController = [[UISearchController alloc] initWithSearchResultsController:nil]; 
UISearchBar *searchBar = searchController.searchBar; 
[searchBar sizeToFit]; 
searchBar.placeholder = @"Search"; 

UIButton *routeButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[routeButton setBackgroundImage:[UIImage imageNamed:@"go_route"] forState:UIControlStateNormal]; 
routeButton.frame = CGRectMake(0., 0., 30., 30.); 

UIButton *cancelButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[cancelButton setBackgroundImage:[UIImage imageNamed:@"cancel"] forState:UIControlStateNormal]; 
cancelButton.frame = CGRectMake(0., 0., 30., 30.); 

UIBarButtonItem *routeButtonItem = [[UIBarButtonItem alloc] initWithCustomView:routeButton]; 
UIBarButtonItem *cancelButtonItem = [[UIBarButtonItem alloc] initWithCustomView:cancelButton]; 

self.navigationItem.rightBarButtonItems = @[cancelButtonItem, routeButtonItem]; 
self.navigationItem.titleView = searchBar; 

功能上,它工作正常,但看起來有點怪:按鈕繪製的位上比搜索欄:

enter image description here

我想讓按鈕稍微低一些,與搜索欄垂直對齊。我如何實現它?

P.S. 看來,如果我改變y座標cancelButton.frame = CGRectMake(0., y, 30., 30.); - 它沒有任何效果。

回答

0

嘗試增加你的代碼在viewDidAppear如下,

- (void)viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:animated]; 

    // Enter your code 

} 

您將獲得導航項目爲中心,如果仍然沒有更新框架的嘗試,

更新在viewDidAppear其「Y」的位置,否則試試如下設置幀恰好毗鄰搜索欄,

routeButton.center = CGPointMake(routeButton.center.x, searchBar.center.y); 
+0

先後此解決方案爲您的情況? – Bharath