2014-10-09 3 views
0

안녕하세요 이상한 문제에 직면하고 있습니다. 윈도우의 RootViewController에 UIViewController를 추가하려고합니다. ViewControllerXIB의 자동 크기 조정을 MaskAll로 설정했습니다. 가로 모드에서 iOS 7을 사용하여 iPad에서 프로젝트를 실행하면 화면 크기가 (1024,768)이됩니다. 하지만 iOS 8을 사용하여 iPad에서 실행하면 화면 크기가 (768,1024)가됩니다. 왜 이런 일이 일어나는지 알 수는 없습니다. 이것 때문에 내 ViewController의 하위 화면은 ViewController의 화면 크기를 전달하기 때문에 적절한 화면 크기로 로딩되지 않습니다. 아무도 나를 도울 수 있습니까?iOS 7 및 iOS 8 용 RootViewController의 다른 프레임 얻기

+0

참조 http://stackoverflow.com/questions/24150359/is-uiscreen-mainscreen-bounds-size-becoming-orientation-dependent-in-ios8 동일한 기본 질문입니다. – rmaddy

+0

이전 버전의 모든 iOS에서 iOS 8의 가로 모드로 화면 크기가 변경되는 방식이 변경되었습니다. 내가 언급 한 WWDC 비디오를 잊어서 문서를 가리킬 수는 없다. –

답변

4

하지만 iOS 8을 사용하는 iPad에서 실행하면 화면 크기가 (768,1024)가됩니다.

iOS 7 이전 버전에서는 화면 및 화면이 기기에 고정 된 상태에서 순환 뷰 변형을 루트보기 컨트롤러보기에 적용했기 때문입니다. 하지만 iOS 8에서는 전체 앱이 문자 그대로 회전합니다. 이것은 대문자 변경이며 회전 변환을 예상하는 경우 실제로 기존 코드를 손상시킬 수 있습니다. 반면에 iOS 8에서는 스크린, 창, 루트보기 컨트롤러의보기가 모두 크기를 간단히 변경합니다 (높이와 너비를 바꿉니다). 즉, 앱이 가로로 시작되면 그것은 처음부터 정확한 치수를 가지고 있습니다.

iOS 8에서 순수한 장치 좌표가 필요한 경우 새 UICoordinateSpace 프로토콜 (https://developer.apple.com/library/ios/documentation/UIKit/Reference/UICoordinateSpace_protocol/)으로 가져올 수 있습니다.

+0

나는 기본적으로 전에 잘못하고있는 일을 추가해야합니다. 화면 크기를 보지 말고 제약 조건으로 뷰를 배치해야합니다. 그렇게하면 수퍼 뷰가 채택 할 수있는 차원에 상관없이 인터페이스가 _adapts_가됩니다. (이 새로운 철학에 대해 자세히 알아 보려면 앱 적응력을 높이는 WWDC 2014 비디오보기 ...) – matt