2017-11-06 8 views
0

내 오래된 iOS 앱은 모든 iPhone 버전에서 잘 작동합니다 (iPhone X 모델 제외). iPhone X 시뮬레이터를 실행하고 iPhone X 화면의 하단에서 일부 화면이 겹쳐 보이는 것을 봅니다. 내 응용 프로그램은 모든 uiviewcontrollers가 프로그래밍 방식으로 만들었으며 스토리 보드로 디자인되지 않았습니다. 그래서 모든 뷰 컨트롤러에서 프레임 크기를 찾기 위해 (self.view.frame) 사용했습니다. iPhoneX에는 스토리 보드에서 설계 할 수있는 안전 가드 영역이 있습니다. 하지만 런타임에 안전 가드 영역을 어떻게 계산합니까? Google 검색 중에는 iOS11의 지원 인 안전 가드 영역을 찾을 수있는 샘플이 있습니다.하지만 ios9에서 내 앱을 실행하고 싶습니다. 내 프로젝트에는 많은 uiviewcontroller가 있습니다. 그래서 누구나이 작업을 수행하는 가장 쉬운 방법을 말할 수 있습니까?iPhone X를 지원하는 기존 앱은 무엇입니까?

+0

iPhone 8은 어떻습니까? – SPlatten

+0

1125px × 2436px의 스플래시 화면 이미지를 추가 했습니까? – Abhishek

+0

스플래시 화면 이미지가 추가되었습니다. 하지만 여전히 문제가 있습니다. – vinoth87

답변

0

유사한 목적 C 코드를 추가하는 것입니다 (오래된 사전 (11) 배포 목표로) 이전 (이전 스토리 보드 매뉴얼 레이아웃) 아이폰 X 레이아웃 문제에 애플 리케이션을위한 런타임 수정을 추가하는 한 가지 가능한 방법 :

CGRect r0 = self.view.frame; 
CGRect r1 = r0; 
if (@available(iOS 11.0, *)) { 
    r1 = self.view.safeAreaLayoutGuide.layoutFrame;  
} 
if (r1.size.height < (r0.size.height - 20.0)) { 
    // fix top and bottom view overlap outside safe area here 
} 

각 UIViewController의 viewWillLayoutSubviews 메서드 내에 있습니다.

@available 체크를 사용하면 iOS 11 이전의 iOS 버전에서이 코드를 안전하게 사용할 수 있습니다.

+0

xcode8.2가 있습니다 .. 스토리 보드를 사용하여 새로운 iOS 앱과 UI 디자인을 만들 예정입니다 ... iPhoneX에서 문제없이 앱을 실행하고 싶습니다. xcode8.2를 사용하여 어떻게 할 수 있습니까? 가능할까요? 또는 xcode9가 필요합니다. – vinoth87

+0

iPhone X를 지원하려면 Xcode 9가 필요합니다. Xcode 8.x는 새 장치를 인식하지 못하기 때문에 앱의보기 포트 위아래에 검은 색 띠가 있습니다. – sn3ek