设备方向更改时更改ViewController?

布朗森巷

我试图弄清楚当方向改变时如何切换VC。我在同一故事板上有2个不同的头像,即portraitVC和landscapeVC。目标是在景观中发生本质上相同的事情,但使用不同的UIImage。有人有帮助吗?

逻辑应类似于:

if orientation is landscape {
    use landscapeVC 
} else {
    Use portraitVC
}
卢卡斯

好的,我不太确定您要实现的目标,但是有两种可能的解决方案:

1.旋转时更改UIImageView图像

您可以添加观察者,以在设备改变方向时得到通知。

将此添加到您的viewDidLoad()中:

NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(didRotate), name: UIDeviceOrientationDidChangeNotification, object: nil)

方向更改时,将调用以下函数:

func didRotate(notification: NSNotification) {
    if UIDeviceOrientationIsLandscape(UIDevice.currentDevice().orientation) {
        // Change UIImageView image here
    }

    if UIDeviceOrientationIsPortrait(UIDevice.currentDevice().orientation) {
        // Change UIImageView image here
    }
}

您可以使用此代码将图像更改为纵向或横向。哦!并且不要忘记在viewWillDisappear()中删除观察者:

NSNotificationCenter.defaultCenter().removeObserver(self)

2.旋转时更改布局和UI

这有点棘手,但一点也不困难。您需要使用情节提要板大小类。

紧凑型x常规尺寸等级

检出上图的中下部。看到wCompact hRegular的字样,这意味着您要为所有iPhone纵向设计。对于横向iPhone,请使用wAny hCompact看看上图中的某些约束是如何禁用的?这是因为它们对特定的尺寸类别无效。

任意x紧凑尺寸等级

通过使用大小类,您不仅可以针对纵向和横向自定义UI,还可以针对更特定的设备(iPhone和iPad)自定义UI。您可以在此处阅读有关此主题的更多信息

我希望这有帮助!:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章