Adaptive Layout for iPad

I follow this article to create responsive layout in ios. Creating responsive user interfaces for iOS 8 .

It works great on iPhone. Now I will not have the same effect on the iPad. But for iPad, responsive layout doesn't work.
Here is a screenshot of the application in iPhone5 (the green square represents view1, and the yellow box represents view2)
1.Portrait mode

enter image description here

  1. Landscape mode
    enter image description here

Question : How to achieve the same effect for the iPad?
Extended Question: How do I set the initial orientation of the iPad in landscape mode?

+4
source share
1 answer

iPad , .

, IBOutlet, , , :

@IBOutlet var landscapeConstraints: [NSLayoutConstraint]!
@IBOutlet var portraitConstraints: [NSLayoutConstraint]!

, , iPad, ACTIVE Constraints IBOutlet. , , ACTIVE- LandscapeConstraints IBOutlet.

viewWillTransitionToSize:

    override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
        super.viewWillTransitionToSize(size, withTransitionCoordinator: coordinator)
        let transitionToLandscape = size.width > size.height 
        let constraintsToUninstall = transitionToLandscape ? ortraitConstraints : landscapeConstraints 
        let constraintsToInstall = transitionToLandscape ? landscapeConstraints : portraitConstraints

        view.layoutIfNeeded()
        coordinator.animateAlongsideTransition({
            _ in
            NSLayoutConstraint.deactivateConstraints(constraintsToUninstall) 
            NSLayoutConstraint.activateConstraints(constraintsToInstall) 
            self.view.layoutIfNeeded()
        }, completion: nil)
}

//, :

enter image description here

, , , , , , .

//

, viewWillAppear / :

override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)

        let transitionToLandscape = view.frame.size.width > view.frame.size.height

        let constraintsToUninstall = transitionToLandscape ? portraitConstraints : landscapeConstraints
        let constraintsToInstall = transitionToLandscape ? landscapeConstraints : portraitConstraints

        view.layoutIfNeeded()
        NSLayoutConstraint.deactivateConstraints(constraintsToUninstall)
        NSLayoutConstraint.activateConstraints(constraintsToInstall)
    }
+5

All Articles