ios - How to change layout based on orientation on ipad? -
i looking @ clock app on new ipad air 2 , when changing orientation affects layout. there 6 clocks in world clock tab , in portrait there 2 rows of 3 clocks in landscape there 1 row of 6 clocks.
i dont see based on size classes in xcode 6 allowing differentiation of landscape portrait, there different/better way of doing this?
there's method--willtransitiontotraitcollection:withtransitioncoordinator:--that lets know when trait (e.g. horizontal size class, vertical size class, display scale, or user interface idiom) changes.
you can check newcollection.verticalsizeclass see if equals .compact (landscape) or .regular (portrait) when uidevice.currentdevice().userinterfaceidiom != .pad
so, example:
override func willtransitiontotraitcollection(newcollection: uitraitcollection, withtransitioncoordinator coordinator: uiviewcontrollertransitioncoordinator) { super.willtransitiontotraitcollection(newcollection, withtransitioncoordinator: coordinator) if uidevice.currentdevice().userinterfaceidiom != .pad { switch newcollection.verticalsizeclass { case .compact: golandscapewithcoordinator(coordinator) case .regular, .unspecified: hidelandscapewithcoordinator(coordinator) } } } golandscapewithcoordinator(coordinator) this, instance:
func golandscapewithcoordinator(coordinator: uiviewcontrollertransitioncoordinator) { let landscapevc = storyboard!.instantiateviewcontrollerwithidentifier("landscapeviewcontroller") as? landscapeviewcontroller if let controller = landscapevc { controller.view.frame = view.bounds controller.view.alpha = 0 view.addsubview(controller.view) addchildviewcontroller(controller) coordinator.animatealongsidetransition({ _ in controller.view.alpha = 1 }, completion: { _ in controller.didmovetoparentviewcontroller(self) }) } }
Comments
Post a Comment