iOS Swift 在 iPad 上随方向改变图像
Posted
技术标签:
【中文标题】iOS Swift 在 iPad 上随方向改变图像【英文标题】:iOS Swift change image with orientation on iPad 【发布时间】:2018-12-03 14:39:48 【问题描述】:我有一个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
调用时,它会正确更改图像,但此更改会反映在视图上,用户可以在更改时看到它。
我的问题是:
有什么方法可以根据Interface Builder
的尺寸等级为iPad
设置图像?
如果没有,我该如何解决以编程方式执行此操作时实时图像更改的问题?
【问题讨论】:
【参考方案1】:由于 iPad 上的尺寸等级不会改变,您可以使用设备方向
SWIFT 4
if UIDevice.current.userInterfaceIdiom == .pad &&
UIDevice.current.orientation.isPortrait
// do something here
【讨论】:
这是我目前使用的解决方案。有用。但是当我在 viewDidLoad 中调用它时,它不会改变图像。当从 viewDidAppear 调用时,它会更改它,但用户会注意到更改 - 因为它在出现在屏幕上之后发生了更改。 @AmaniElsaed 尝试从 viewWillAppear() 调用它。我不确定,但试试看:) 不幸的是,它不起作用。与 viewDidLoad 相同的结果 嗯...我不能说别的了 :(以上是关于iOS Swift 在 iPad 上随方向改变图像的主要内容,如果未能解决你的问题,请参考以下文章
SpriteKit 设备方向改变导致 SKLabelNode 变形 Swift
锁定方向在 ipad ios 8 swift xcode 6.2 上不起作用