2017-09-25 4 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. cancelButton.frame = CGRectMake(0., y, 30., 30.);에서 y 좌표를 변경하면 효과가 없습니다. 다음과 같이 viewDidAppear에 코드를 추가

답변

0

시도,

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

    // Enter your code 

} 

당신은 탐색 항목을 중심으로 얻을 것이다, 그리고 여전히 프레임이 업데이트되지 않습니다하려고하면

는 viewDidAppear에서의 "Y"위치 업데이트 , 그렇지 않으면 아래와 같이 검색 막대에 정확히 인접한 프레임을 설정하십시오.

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

이 솔루션이 효과가 있습니까? – Bharath