Xcode 5로 업데이트 한 후 내 앱의 모든보기에서 탐색 모음이 아래로 이동했습니다. 다음은 몇 가지 스크린 샷입니다. 첫 번째는 아래로 당겨진 뷰의 모든 것을 보여주고 두 번째는 모든 것을 그대로 보여줍니다. 검색 표시 줄은 탐색 표시 줄에서 시작해야합니다.
누구든지 내가 이것을 고칠 수있는 방법을 알고 있습니까?
편집 : 나는 이전 에이 권장 사항을 시도했습니다.
if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
self.edgesForExtendedLayout = UIRectEdgeNone;
그러나 그것은 매우 이상한 결과를 낳습니다.
이것은 내비게이션 바의 투명성으로 인해 나타나는이 뷰 컨트롤러 아래에 “슬라이드 메뉴”가 있기 때문일 수 있습니다.
답변
탐색 모음의 반투명 속성을 NO로 설정합니다 .
self.navigationController.navigationBar.translucent = NO;
이렇게하면 탐색 표시 줄과 상태 표시 줄 아래에 표시되는보기가 수정됩니다.
탐색 모음을 표시하고 숨겨야하는 경우
if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
self.edgesForExtendedLayout = UIRectEdgeNone; // iOS 7 specific
당신의 viewDidLoad
방법에.
답변
에서 iOS 7
기본값으로 모든 컨트롤러 반투명 속성 값은 NO 반투명 속성을 설정하므로, YES없는 이 문제에 대한.
self.navController.navigationBar.translucent = NO;
답변
답변
이것은 iOS 8.1에서도 신속하게 작동합니다.
navigationController?.navigationBar.translucent = false
답변
에서 반투명도를 유지하려면 navigationBar
끝에 viewDidLoad
또는 다음 viewWillAppear
코드 줄을 추가하십시오.
[self.view sendSubviewToBack:self.tableView]
어쨌든 scrollView
하위 클래스 ( UITableView
, UICollectionView
등)가 index
현재보기 에서 0에 subviews
있으면 navigationBar
. 또한 iOS7 이전 버전의 UI에도 영향을 미치지 않아야합니다.
편집UITableView
프로그래밍 방식으로
초기화 하면 이것을 사용하여 뷰에 추가하는 것이 가장 좋습니다.[self.view insertSubview:self.tableView atIndex:0];
답변
스위프트 4 :
viewDidLoad 메서드에서 다음 코드 줄을 설정합니다.
self.navigationController?.navigationBar.isTranslucent = false
답변
다음 URL에 표시된대로이 메서드를 뷰 컨트롤러에 추가 할 수 있습니다 .
-(void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
self.searchBar.frame =
CGRectMake(0, self.topOfViewOffset, self.searchBar.frame.size.width, self.searchBar.frame.size.height);
}