2017-09-22 7 views
1

iOS 11에 코드를 적용하면 UINavigationController에있는 UISearchbar에 어려움을 겪고 있습니다. 나는이 같은 SearchController/SearchBar에 설정 :iOS 11에서 잘못된 위치에있는 UISearchBar

self.searchController = [[UISearchController alloc] initWithSearchResultsController:nil]; 
self.searchController.searchBar.scopeButtonTitles = @[@"foo", @"bar"]; 
self.searchController.searchBar.showsScopeBar = YES; 
self.searchController.searchResultsUpdater = self; 
self.searchController.searchBar.delegate = self; 
self.searchController.delegate = self; 
self.searchController.dimsBackgroundDuringPresentation = NO; 
self.searchController.hidesNavigationBarDuringPresentation = NO; 
self.definesPresentationContext = YES; 
if (@available(iOS 11.0, *)) 
{ 
    self.navigationItem.searchController = self.searchController; 
    self.navigationItem.hidesSearchBarWhenScrolling = YES; 
    UISearchBar *searchbar = self.searchController.searchBar; 
    [searchbar setSomeColors]; 
} 

우리의 기본 색상을 사용하여, 일을 확인 보일 수 있습니다,하지만 SearchBar에와 ScopeButtons 사이의 공간은 약간 너무 큰 있습니다 default layout 가의 backgroundColor로 변경 검색 창에 잘못된 내용이 표시됩니다. different coloring reveals the problem

따라서 UISearchBar는 수퍼 뷰에서 너무 높게 배치됩니다. 누구든지 iOS 11에서이 동작을 일으키는 원인을 알 수 있습니까?

답변

3

우와, 내가

[self.searchController.searchBar setSearchFieldBackgroundPositionAdjustment:UIOffsetMake(0.0, 8.0)]; 

더 clarification.I 힘이 당신을 얻을 필요하세요

@property(nonatomic) UIOffset searchFieldBackgroundPositionAdjustment NS_AVAILABLE_IOS(5_0) UI_APPEARANCE_SELECTOR; 
+0

UISearchBar.h보기 ...이에서 iOS 5부터 존재, 아무 생각이 없었다. – nikhil

+1

거기에 UISearchBar는 내가 필요한 것을 수행하는 searchFieldBackgroundPositionAdjustment라는 속성을 가지고 있습니다. 이 속성을 지정된 오프셋으로 설정하면됩니다. – Tobias