我想在设备旋转时将UIImage设置为全屏。问题是imageView没有正确旋转(它不是全屏)。目前,我有这段代码:
我将它添加到viewDidLoad()函数:NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(rotate), name: UIDeviceOrientationDidChangeNotification, object: nil)
那是我的方法:
func rotate() {
self.contentView.frame = self.view.bounds
self.imageView?.frame = self.view.bounds
}
为什么这不起作用?
答案 0 :(得分:0)
在 Swift 2 中保留可能对您有帮助的内容(保留您的通知中心观察员):
func rotate(){
let SizeOfScreen: CGRect = UIScreen.main.bounds
let HeightOfScreen = SizeOfScreen.height
let WidthOfScreen = SizeOfScreen.width
yourImageView.frame = CGRect(x: 0, y: 0, width: WidthOfScreen, height: HeightOfScreen)
}
答案 1 :(得分:0)
我想你可能会让这个过于复杂。我不是担心KVO,而是我为你的UIImageView视图控制器覆盖viewWillTransitionToSize:withTransitionCoordinator方法(参见https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewController_Class/)。
当视图控制器的根视图改变大小时自动调用此方法 - 包括设备的旋转,并且这些调用沿视图控制器层次结构传播。该方法将为您提供视图的大小作为参数,然后您可以使用该参数来调整图像大小。
顺便说一下,为了确保图像大小调整,还必须确保将UIImageView的contentMode设置为UIViewContentMode.scaleToFill,或者.scaleAspectFill以确保它填充其框架。我还看到你可以选择UIViewContentMode.redraw,它会在视图边界发生变化时自动调用setNeedsDisplay()。希望有所帮助。