gpt4 book ai didi

ios - 使用自动布局为 UIView 应用渐变背景

转载 作者:可可西里 更新时间:2023-11-01 03:27:38 25 4
gpt4 key购买 nike

我扩展了 UIView 以添加一个 addGradientWithColor() 方法来获取渐变背景:

 extension UIView {
func addGradientWithColor() {
let gradient = CAGradientLayer()
gradient.frame = self.bounds
gradient.colors = [gradientEndColor.CGColor, gradientStartColor.CGColor]
gradient.startPoint = CGPointMake(1,0)
gradient.endPoint = CGPointMake(0.2,1)
self.layer.insertSublayer(gradient, atIndex: 0)
} }

我的问题是当我运行横向模式时,UIView 没有拉伸(stretch)

override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
self.view.addGradientWithColor() }

我尝试调用 viewDidLayoutSubviews() 但它无法正常工作

这是屏幕截图:

移除 viewDidLayoutSubviews() 后 enter image description here

最佳答案

您可以子类化 UIView 并在添加渐变的地方覆盖 drawRect 方法。

已更新至 Swift 4


class GradientView: UIView {

private let gradient : CAGradientLayer = CAGradientLayer()
private let gradientStartColor: UIColor
private let gradientEndColor: UIColor

init(gradientStartColor: UIColor, gradientEndColor: UIColor) {
self.gradientStartColor = gradientStartColor
self.gradientEndColor = gradientEndColor
super.init(frame: .zero)
}

required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") }

override func layoutSublayers(of layer: CALayer) {
super.layoutSublayers(of: layer)
gradient.frame = self.bounds
}

override public func draw(_ rect: CGRect) {
gradient.frame = self.bounds
gradient.colors = [gradientEndColor.cgColor, gradientStartColor.cgColor]
gradient.startPoint = CGPoint(x: 1, y: 0)
gradient.endPoint = CGPoint(x: 0.2, y: 1)
if gradient.superlayer == nil {
layer.insertSublayer(gradient, at: 0)
}
}
}

创建 UIView 后,您只需向该 View 添加约束。

关于ios - 使用自动布局为 UIView 应用渐变背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39572990/

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