首页 > 解决方案 > 如何在 iOS 10+ 中更换设备旋转的渐变背景

问题描述

使用 Swift 5,我正在为 UIPageControl 中的视图创建渐变背景:

var pageControl = UIPageControl()
func configurePageControl() {
   self.view.applyGradient(colors: [UIColor.HL.PurpleStart,UIColor.HL.PurpleEnd])
}

效果很好......所有页面都有这个紫色渐变背景。但是当您旋转设备时,渐变会旋转,但会保持其原始大小,即之前方向的设备框架大小。

所以我只想在设备旋转时重绘渐变。我使用以下方法在设备旋转完成后成功执行:

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
    super.viewWillTransition(to: size, with: coordinator)
    coordinator.animate(alongsideTransition: nil, completion: { _ in
        self.view.applyGradient(colors: [UIColor.HL.PurpleStart,UIColor.HL.PurpleEnd])
    })
}

但这会在现有背景下添加一个新的渐变背景。self.view.applyGradient()是一种比 SO 上的其他示例更流行的应用渐变背景的方法,因此其他解决方案似乎并不适用。那么在使用时如何移除/替换现有的渐变self.view.applyGradient()呢?

标签: iosswiftswift5

解决方案


推荐阅读