0

여러 하위보기 컨트롤러가있는 응용 프로그램에 화면이 있습니다. iPhone과 같은 작은 화면 크기에서는보기 컨트롤러가 서로 대등하게 배치됩니다. iPad 화면 크기에서는보기 컨트롤러 중 하나가 다른 컨트롤러 위에 놓입니다.중첩 된 자식보기 컨트롤러 내에서 화면의 현재 크기 클래스를 확인하려면 어떻게합니까?

부동 상태 일 때 때로는 떠 다니는 뷰 컨트롤러의 모서리 반경 만 변경되도록 만들고 싶습니다. 따라서, 내 하위 뷰 컨트롤러에서 viewDidLoad 또는 overrideTraitCollection(forChildViewController:)과 같은 메서드를 재정의하여 크기 클래스가 wRegular, hRegular인지, 세로 또는 가로로 iPads인지에 따라보기의 모퉁이 반경을 설정하는 방법을 살펴 보았습니다.

그러나 하위 뷰 컨트롤러는 루트 뷰 컨트롤러와 동일한 크기 클래스 값을 설정하지 않은 것 같으며 parentViewController 계층 구조로 이동해도 해당 값을 가진보기 컨트롤러로 이동하지 못하는 것 같습니다 .

하위 뷰 컨트롤러에서 뷰 계층 구조의 최상위 크기 클래스에 어떻게 액세스해야합니까?

편집 : 나는 UIScreen를 사용하여 기존의 대답을 시도했습니다, 내 앱에서만 볼 응용 프로그램입니다 때 잘 작동 . 그러나 앱이 분할 화면 모드에서 실행될 때 잘못된 동작이 발생합니다. 앱이 좁은 경우에도 항상 일반/일반을 반환합니다. 내 앱이있는 화면의 일부분만을위한 크기 클래스를 얻는 것을 포함하는 솔루션이 있습니까? 이처럼

+1

"하위 뷰 컨트롤러에서 뷰 계층 구조의 맨 위에있는 현재 크기 클래스에 어떻게 액세스해야합니까?" 크기 등급이 무엇인지 화면에 문의하십시오. – matt

+0

그게 전부 였어. 감사! –

+0

다음은 어린이를위한 특성 환경을 변경하는 방법을 보여주는 다운로드 가능한 예제 프로젝트입니다. https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/bk2ch06p321overrideTraitCollection/OverrideTraitCollection/ViewController.swift 예를 들어 설명하는 것과 똑같은 일을합니다. 특성 컬렉션이 다른 경우 자식이 다르게 작동합니다 (스토리 보드에 구성) – matt

답변

1

(이것은 현재 스위프트 3) :

let tc = UIScreen.main.traitCollection 

지금 당신이 tc의 수직 및 수평 크기 클래스를 심문 할 수 있습니다.

+1

이 옵션이지만 iPad의 멀티 태스킹을 지원하는 경우에는 권장하지 않습니다. – tzuer

+0

@ user3049050 그래서 우리는 iPad 멀티 태스킹을 할 때 화면이이 앱에 대한 정답을 제시하지 않을 것입니다. – matt

+0

예 - UIScreen의 traitCollection은 멀티 태스 크에서 크기를 조정하여 정기적으로 반환합니다. View Controller에서이 컨트롤러를 가져 오는 것이 좋습니다. 그 경우에 – tzuer