시즈 클래스를 조사했습니다.

7047 단어 iOSSwiftXcode6

Size Class란 무엇입니까?

  • XCode 5에 앞서 두 개의 Storyboard를 준비해 아이폰과 아이패드를 지원해야 한다.
  • XCode6에 Size Class를 도입하여 하나의 Storyboard에서 여러 장치 장치에 대응하는 방향
  • Size Class에서 3개의 추상 값으로 크기 지정
  • Compact
  • Regular
  • Any(Compact, Regular 모두 해당)
  • 이 세 값을 가로(Horizontal) 및 세로(Vertical)로 지정하고 조합을 통해 어느 장치에 대한 명령인지 결정합니다
  • .

    Size Class 테이블에 장치 & 방향 조합 할당

  • 여기 시계는 Ladscape와Portrait가 반대로...미안합니다.
  • 학급 방법의 문장은 매우 이해하기 쉬워요. 저쪽을 보세요.
  • http://dev.classmethod.jp/references/ios8-trait-collection/
  • 할 수 있는 일


    스토리보드에서 할 수 있는 거.

  • 각 Size Class에 Auto Layout 지정
  • "이 Size Class를 통해 Auto Layout이 유효하다"는 느낌으로 설정
  • 각 Size Class에 대해 UI 구성 요소 지정 가능
  • "UI 구성 요소가 Size Class에 있을 때"느낌으로 설정
  • 코드 가능

  • UITTraitEnvironment 프로토콜이 구현된 경우
  • traitCollection(UITTraitCollection 클래스의 실례)에서 현재 Size Class
  • 를 얻을 수 있습니다.
  • override traitCollectionDidChage 의 경우 Size Class 가 변경될 때(장치 방향이 변경될 때) 처리를 추가할 수 있음
  • 강제로 사용한 예


    Horizontal이 Compact일 때, 중앙화, Reglar일 때, 오른쪽 정렬 버튼

  • 사이즈와 위치는 Auto Layout을 통해 변경할 수 있어 Storyboard에서 완성








  • 완성!시뮬레이터의 아이폰6 플러스를 확인해 보세요.


    Horizontal은 Comact에서 버튼을 Disable로 설정합니다.

  • Auto Layout을 통해 활성, 비활성, 색상, 글꼴 크기 등의 속성을 변경할 수 없음
    UITTraitEnvironment 프로토콜을 실시하여 UITTraitCollection을 통해 방향을 판정하고 조작
  • 버튼 두 개를 준비해서 따로 빼는 방법도 있어요.
    레이아웃 변경 시 반드시 두 개를 수정해야 하기 때문에 매우 힘들다
  • import UIKit
    
    // UITraitEnvironmentプロトコルを実装
    class ViewController: UIViewController, UITraitEnvironment {
    
        // Storyboardで配置したUIButton
        @IBOutlet weak var button: UIButton!
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            // レンダーされた時に初期値を設定する
            // traitCollection.horizontalSizeClassで横方向のサイズを取得
            // UIUserInterfaceSizeClassというEnumが返ってくる
            button.enabled = traitCollection.horizontalSizeClass != .Compact
        }
    
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }
    
        // Size Classが変更されたら実行される関数
        override func traitCollectionDidChange(previousTraitCollection: UITraitCollection?) {
            // デバイスの向きが変わった時に再計算して設定する
            button.enabled = traitCollection.horizontalSizeClass != .Compact
        }
    }
    

    처음

  • [오류] Storyboard로 화면 아래쪽의 "wAny|hAny"단추를 편집하여 Size Class 선택
    오른쪽 패널에서 등록 정보를 변경하면 Size Class에 등록 정보를 설정할 수 있을까요?
  • [정답]'어떤 Size Class로 미리 보기'버튼
  • 참고 자료

  • Xcode 6 시대의 다중 장치 대응 ~ Size Class 및 벡터 이미지 ~
  • [iOS 8] 다중 장치의 새로운 기능인 "Trait Collection" | Developers를 지원합니다.IO
  • 좋은 웹페이지 즐겨찾기