program tip

UINavigationBar iOS 7 아래에보기가 숨겨 짐

radiobox 2020. 11. 29. 10:10
반응형

UINavigationBar iOS 7 아래에보기가 숨겨 짐


이전에는 프로젝트에 iOS 6.1을 사용했습니다. 최근에 iOS 7로 전환했습니다. 많은 변경 사항을 알고 코드를 업데이트했습니다.하지만 이상한 동작을 관찰했습니다. 모든 화면의 내보기가 탐색 모음 아래에 숨겨집니다. 뷰 위치를 변경하면 iOS7의 문제가 해결되지만 이전 iOS 버전에서는 문제가 발생합니다.

누구든지 나를 설명 할 수 있습니까, 이유는 무엇이며 왜 발생합니까 ?? 이 문제를 일으키는 iOS 7에서 변경된 사항은 무엇입니까 ??

어떤 도움을 주시면 감사하겠습니다 ..


시도는 navigationBar.translucent = NO;, 그것은이다 YESiOS7에 기본적으로.

UINavigationBar문서 의이 부분을 살펴 보는 것도 좋습니다 .

iOS 7의 새로운 동작. 기본값은 YES입니다. 속성을 NO로 설정하여 불투명 배경을 강제 할 수 있습니다. 내비게이션 바에 사용자 정의 배경 이미지가있는 경우 기본값은 이미지의 알파 값에서 유추됩니다. 알파 <1.0의 픽셀이있는 경우 예 불투명 사용자 정의 배경 이미지가있는 막대에 setTranslucent : YES를 보내면 적용됩니다. 이미지에 대한 1.0 미만의 시스템 불투명도. setTranslucent : NO를 반투명 사용자 정의 배경 이미지가있는 막대에 전송하면 정의 된 경우 막대의 barTintColor를 사용하여 이미지에 대한 불투명 배경을 제공하고, barTintColor가 nil 인 경우 UIBarStyleBlack에 대해 검정색 또는 UIBarStyleDefault에 대해 흰색을 제공합니다.

편집 :

이전 iOS 버전이있는 장치 / 시뮬레이터에서 프로젝트를 실행하는 경우 'navigationBar.translucent'값을 설정하면 예외가 발생합니다.

따라서 다음과 같이 버전 확인을 추가 할 수 있습니다.

float systemVersion = [[[UIDevice currentDevice] systemVersion] floatValue];
if (systemVersion >= 7.0)
{
    navigationBar.translucent = NO;
}

또 다른 옵션은 다음을 설정하는 것입니다.

vc.edgesForExtendedLayout = UIRectEdgeNone;

스위프트 3 :

vc.edgesForExtendedLayout = []

viewController의 탐색 모음 아래에서보기를 중지 할 수 있습니다.

self.edgesForExtendedLayout = UIRectEdgeNone;

Swift 3+ :

self.edgesForExtendedLayout = []

앱에 반투명 탐색 표시 줄이 필요하지 않은 경우 코드 변경없이 iOS7 및 iOS6에서이 문제를 해결할 수 있습니다.

스토리 보드에서 탐색 컨트롤러를 선택한 다음 "Attributes Inspector"를 엽니 다. 그런 다음 "Simulated Metrics"에서 "Top Bar"를 "반투명"이 아닌 일부 값으로 설정합니다.

상단 바 스타일 설정

이제 iOS6 및 iOS7의 뷰는 이전과 동일한 위치를 갖습니다.


이 목록의 7 번 포인트 가 트릭입니다. @null의 대답과 같은 iOS 7 검사 코드로 여전히 포장해야합니다.

float systemVersion = [[[UIDevice currentDevice] systemVersion] floatValue];
if (systemVersion >= 7.0) {
    viewController.edgesForExtendedLayout = UIRectEdgeNone;
}

전체 기사는 iOS 7로 전환하는 사람들에게 유용합니다.


VC Swift와 ur 상태 표시 줄이 겹치지 않도록 VC에이 속성을 사용하십시오.

self.edgesForExtendedLayout = []

목표 C

self.edgesForExtendedLayout = UIRectEdgeNone;

이 키를 찾으십시오 : UIViewControllerBasedStatusBarAppearance.

앱의 정보 PLIST 파일에서 사용되며 다음과 같이 표시됩니다.

컨트롤러 기반 상태 표시 줄 모양보기

이렇게하면 상태 표시 줄의 모양을 제어 할 수 있습니다. 상태 표시 줄에 대한 API 변경 사항이 많이 있습니다. 문서에서 다음 UIViewController과 같은 새로운 메서드 를 살펴보세요.

- (void)prefersStatusBarHidden;


Swift 2.2에서는

self.edgesForExtendedLayout = .None

나에게 투명을위한 가장 좋은 방법 Navigation Bar은 바의 shadowImage와 backgroundImage를 변경하는 것입니다.

navigationController?.navigationBar.isTranslucent = true
navigationController?.navigationBar.backgroundColor = nil
navigationController?.navigationBar.setBackgroundImage(UIImage(named: "navBarBackground")?.resizableImage(withCapInsets: .zero, resizingMode: .stretch), for: .default)  
navigationController?.navigationBar.shadowImage = UIImage()

참고 URL : https://stackoverflow.com/questions/18824994/view-got-hidden-below-uinavigationbar-ios-7

반응형