如何在设备旋转时将UIImageView设置为全屏?

时间:2016-09-09 13:01:15

标签: ios swift uiimageview

我想在设备旋转时将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
}

为什么这不起作用?

2 个答案:

答案 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()。希望有所帮助。