我试图弄清楚当方向改变时如何切换VC。我有2个不同的,portraitVC和landscapeVC,在同一个故事板中。目标是在横向上发生基本相同的事情,但使用不同的UIImage。有人有帮助吗?
逻辑应该是这样的:
if orientation is landscape {
use landscapeVC
} else {
Use portraitVC
}
答案 0 :(得分:1)
好的,我不太确定你想要实现的目标,但这里有两个可能的解决方案:
您可以添加一个观察者,以便在设备更改方向时收到通知。
将此添加到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)
这有点棘手,但并不困难。您需要使用Storyboard Size Classes。
检查上图中下部分。查看它所在的位置 wCompact hRegular ,这意味着您要为纵向设计所有iPhone。对于风景中的iPhone,请使用 wAny hCompact 。看看如何禁用上图中的某些约束?这是因为它们对特定的大小类没有效果。
通过使用尺寸类,您不仅可以自定义纵向和横向的UI,还可以为更具体的设备(iPhone和iPad)自定义UI。您可以阅读有关此主题here的更多信息。
我希望这有帮助! :)