ios - 如何在快速更改屏幕方向时避免背景图像平铺

标签 ios swift xcode

我正在制作一个简单的单页 ios 应用程序的原型(prototype)。当设备方向从纵向切换到横向时,我试图让背景在两个图像之间交换。 '''

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {

    UIGraphicsBeginImageContext(self.view.frame.size)

    switch UIDevice.current.orientation{
    case .portrait:
        UIImage(named: "img_001")?.draw(in: self.view.bounds)
    case .portraitUpsideDown:
        UIImage(named: "img_001")?.draw(in: self.view.bounds)
    case .landscapeLeft:
        UIImage(named: "img_002")?.draw(in: self.view.bounds)
    case .landscapeRight:
        UIImage(named: "img_002")?.draw(in: self.view.bounds)
    default:
        break
    }

    let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()!
    UIGraphicsEndImageContext()
    self.view.backgroundColor = UIColor(patternImage: image)

}

'''

当设备翻转时背景会发生变化,但图像平铺在显示屏上,而它需要是填充屏幕的单个图像。

最佳答案

稍微更新了您的代码以使用正确的“大小”和“边界”

UIGraphicsBeginImageContext(size)
    var bounds = self.view.bounds
    bounds.size = size

    switch UIDevice.current.orientation{
    case .portrait:
        UIImage(named: "download.jpg")?.draw(in: bounds)
    case .portraitUpsideDown:
        UIImage(named: "download.jpg")?.draw(in: bounds)
    case .landscapeLeft:
        UIImage(named: "download.jpg")?.draw(in: bounds)
    case .landscapeRight:
        UIImage(named: "download.jpg")?.draw(in: bounds)
    default:
        break
    }

    let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()!
    UIGraphicsEndImageContext()
    self.view.backgroundColor = UIColor(patternImage: image)

您可以通过here获得更多帮助

关于ios - 如何在快速更改屏幕方向时避免背景图像平铺,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57966602/

相关文章:

ios - 如何将 realm.objects(SomeObject.self).filter() 传递给需要 Results<Object> 的函数

ios - swift 的新手 : Why is the Timer not updating to the UILabel?

ios - 为什么我的登录功能出现此错误

swift - Bundle.main.url 在 Xcode 中找不到我的 .obj 文件

objective-c - 将 NSString 转换为 NSAttributedString 用于绘图

iOS 应用程序无法正确显示 iPad

swift - 为什么要避免强制展开

objective-c - 我如何在 Objective-C 中播种 rand() 函数?

ios - 我如何重新填充 TableView Controller ?

cocoa-touch - 由于未命中 RLMRealm.setSchemaVersion block ,无法迁移到具有更新属性的新模式