Har*_*las 24 iphone ipad uiinterfaceorientation ios size-classes
如何使用Size类设计具有不同布局的iPad横向和纵向屏幕.我只能找到两个方向的w-regular和h-regular.示例:我需要使用Size Class在纵向和横向上垂直对齐2个视图
最后我找到了解决方案:
if traitCollection.verticalSizeClass == .Regular && traitCollection.horizontalSizeClass == .Regular {
var orientation:UIInterfaceOrientation = UIApplication.sharedApplication().statusBarOrientation;
if orientation == UIInterfaceOrientation.LandscapeLeft || orientation == UIInterfaceOrientation.LandscapeRight {
// orientation is landscape
} else {
// orientation is portrait
}
}
Run Code Online (Sandbox Code Playgroud)
看起来苹果打算将两种iPad方向都视为一样 - 但正如我们中的许多人所发现的那样,有非常合理的设计理由想要改变iPad Portrait与iPad Landscape的UI布局.
但是,请参阅此答案,了解另一种调整大小类以满足我们需求的方法:https: //stackoverflow.com/a/28268200/4517929
对于Swift 3,它看起来像这样:
override func overrideTraitCollection(forChildViewController childViewController: UIViewController) -> UITraitCollection? {
if UI_USER_INTERFACE_IDIOM() == .pad &&
view.bounds.width > view.bounds.height {
let collections = [UITraitCollection(horizontalSizeClass: .regular),
UITraitCollection(verticalSizeClass: .compact)]
return UITraitCollection(traitsFrom: collections)
}
return super.overrideTraitCollection(forChildViewController: childViewController)
}
Run Code Online (Sandbox Code Playgroud)
在横向模式下,它将使用wRhC代替wRhR用于iPad设备.将此代码放入基本视图控制器,即此规则适用于此规则所呈现的所有控制器.您可以在此处添加任何其他条件...例如,如果您希望此规则仅适用于特定视图控制器,则if运算符将如下所示:
if UI_USER_INTERFACE_IDIOM() == .pad &&
childViewController is YourSpecificViewController &&
view.bounds.width > view.bounds.height {
let collections = [UITraitCollection(horizontalSizeClass: .regular),
UITraitCollection(verticalSizeClass: .compact)]
return UITraitCollection(traitsFrom: collections)
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
14576 次 |
最近记录: |