我有一个iOS
应用程序,应同时在纵向和横向模式下运行。问题是我有一个应该在每个方向上更改的图像,即肖像图像与风景图像不同。
我已经在Interface Builder的iPhone
屏幕上成功实现了此功能。但是对于iPad
,问题在于iPad
的大小类始终是Regular width
和Regular Height
。因此,我无法与Interface Builder.
所以,我以编程方式实现了它:
NotificationCenter.default.addObserver(forName: UIDevice.orientationDidChangeNotification,
object: nil,
queue: .main,
using: { notification in
//change image for iPad here
})
然后调用调用检查方向并在加载视图时设置图像的方法,以便它设置正确的图像。
现在的问题是,如果从viewDidLoad
调用此方法,由于尚未创建UIImageView
,因此它不会更改其图像。从viewDidAppear
调用时,它可以正确更改图像,但是此更改会反映在视图上,并且用户可以在更改时看到它。
我的问题是:
是否有任何方法可以根据iPad
中的尺寸类别为Interface Builder
设置图像?
如果没有,我该如何解决以编程方式进行实时图像更改的问题?
答案 0 :(得分:1)
由于iPad上的尺寸类别不会更改,因此可以使用设备方向
SWIFT 4
if UIDevice.current.userInterfaceIdiom == .pad &&
UIDevice.current.orientation.isPortrait {
// do something here
}