Master-Detail의 아이폰 앱을 사용해 봤습니다.

6275 단어 XcodeiOS
전형적인 Master-Detail이 설정한 아이폰 앱이 아이패드를 지원할 때 하는 일을 소개한다.
그림 왼쪽에서 보듯이 Push를 통해 이전된 아이폰 응용 프로그램이 있는데 아이패드의 대응에 따라 그림 오른쪽에 있는 레이아웃을 설치하는 상황을 구상했다.

중요한 것은 어떤 형태로든 아이패드에 대처해 보고 싶은 사람을 대상으로 하는 것이다.

방법


1. UISplitViewController 설치

  • "master view controller"에서 UINavigation Controller를 설정합니다
  • "detailview controller"에서 Detail에 대응하는 UIVIew Controller를 설정합니다
  • Master에서 Detail Segue가 "Show(e.g.Push)"인 경우 "Show Detail(e.g.Replace)"으로 변경됩니다
  • 최초 화면인 경우 UISplitViewController의 "Is Initial ViewController"를 확인합니다
  • Before

    After

    2. 항목 설정

  • Devices를 Universal로 변경합니다
  • AppIcon을 다시 만들어서 아이패드용 이미지를 설정합니다
  • 3. MasterViewController 수정

  • 클래스 선언에 UISplitView Controller Delegate를 추가합니다
  • MasterViewController.swift
    class MasterViewController: UITableViewController, UISplitViewControllerDelegate {
    
  • viewDidLoad에서 수송문을 설정하고 항상 2 창 모드로 전환합니다
  • MasterViewController.swift
        override func viewDidLoad() {
            super.viewDidLoad()
    
            if let split = self.splitViewController {
                split.delegate = self // デリゲートのセット
                split.preferredDisplayMode = .AllVisible // 常時2ペイン表示に設定
            }
        }
    
  • 아이폰을 시작할 때 초기 화면이 Detail이 아닌 Master가 되도록 다음 방법을 설치하고true로 되돌려줍니다
  • MasterViewController.swift
        func splitViewController(splitViewController: UISplitViewController, collapseSecondaryViewController secondaryViewController: UIViewController, ontoPrimaryViewController primaryViewController: UIViewController) -> Bool {
            return true
        }
    
    이게 완성이야.

    레이아웃 조정이 필요한 경우


    배치가 붕괴된 상황에서 조정하다.제가 반한 곳을 소개해 드릴게요.

    보기 폭 가져오기


    예를 들어 Master의 UIVIew Controller에서tableView의width를 얻으려면 최초의viewWill Appear까지 전체 화면의width를 되돌려 실제 디스플레이의width를 얻을 수 없습니다.
    어떻게든 뷰윌 페이어를 원하기 전의 상황은 self입니다.splitViewController!.primaryColumnWidth를 사용하여 검색합니다.

    회전 지원


    아이패드에 대응하면 화면이 돌아가고 싶어요(웃음).
    viewWillTransitionToSize를 통해 회전 이벤트를 가져올 수 있지만, 회전 후 내비게이션 막대나 상태 막대의 크기를 가져올 수 없습니다.이런 상황에서,coordinator.animateAlongsideTransition으로 지정된 블록에서 가져오고 설정할 수 있습니다.(정공법이 아닐 수도 있어요. 그나저나 회전 후의 화면 사이즈라면size에서 얻을 수 있어요.)
    MasterViewController.swift
        override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
            super.viewWillTransitionToSize(size, withTransitionCoordinator: coordinator)
    
            coordinator.animateAlongsideTransition(
                { (context: UIViewControllerTransitionCoordinatorContext) -> Void in
                    let width = self.navigationController!.navigationBar.bounds.height
                    // レイアウト調整
                }, completion: nil)
        }
    
    

    끝내다


    아이폰 앱의 아이패드 대응에서 한 일을 소개했다.
    다른 더 좋은 방법이 있다면 저에게 댓글을 달아주시면 기쁩니다.

    좋은 웹페이지 즐겨찾기