gpt4 book ai didi

Swift:旋转时渐变 split

转载 作者:搜寻专家 更新时间:2023-11-01 06:19:02 24 4
gpt4 key购买 nike

简而言之,我有一个混合了深蓝色和黑色的渐变。渐变看起来很漂亮,但是当我旋转屏幕并将其置于横向时,两种颜色分开,屏幕的一半是蓝色背景,另一半是黑色。发现我没有做对,我从这两个来源复制了代码:

YouTube 视频 https://www.youtube.com/watch?v=pabNgxzEaRk

网站 http://blog.apoorvmote.com/gradient-background-uiview-ios-swift/

这是我的代码:

    let topColor = UIColor(red: 28/255.0, green: 25/255.0, blue: 127/255.0, alpha: 1)
let bottomColor = UIColor(red: 0/255.0, green: 0/255.0, blue: 25/255.0, alpha: 1)

let gradientColors: [CGColor] = [topColor.CGColor, bottomColor.CGColor]
let gradientLocations: [Float] = [0.0, 1.0]

let gradientLayer: CAGradientLayer = CAGradientLayer()
gradientLayer.colors = gradientColors
gradientLayer.locations = gradientLocations

gradientLayer.frame = self.view.bounds
self.view.layer.insertSublayer(gradientLayer, atIndex: 0)

有人可以指出正确的方向来阻止我的渐变一分为二吗?

最佳答案

请记住,当更改屏幕方向时,所有 View 的边界也会发生变化(假设您使用的是自动布局),但同样的事情不会应用于以编程方式添加的图层。因此,在您的情况下,渐变层仍然具有根据旋转前的旧 View 边界设置的框架。为了解决这个问题,我建议子类化你的渐变 View 并在 layoutSubviews 函数中更新渐变层框架,该函数在每次 View 边界更改时调用。

class GradientView: UIView {

let gradientLayer = CAGradientLayer()

override func awakeFromNib() {
gradientLayer.frame = self.bounds
gradientLayer.colors = yourColors
gradientLayer.locations = yourLocations
self.layer.addSublayer(gradientLayer)
}

override func layoutSubviews() {
gradientLayer.frame = self.bounds
}
}

关于Swift:旋转时渐变 split ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37880343/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com