gpt4 book ai didi

ios - 添加到 viewDidLayoutSubviews 时按钮渐变不起作用

转载 作者:行者123 更新时间:2023-11-28 13:38:42 25 4
gpt4 key购买 nike

我正在使用下面的代码添加一个按钮渐变

extension UIView {
func applyGradient(colors: [UIColor]) {
self.applyGradient(colors: colors, locations: nil)
}

func applyGradient(colors: [UIColor], locations: [NSNumber]?) {
let gradient = CAGradientLayer()
gradient.frame = self.bounds
gradient.colors = colors.map { $0.cgColor }
gradient.locations = locations
gradient.startPoint = CGPoint(x: 0, y: 0)
gradient.endPoint = CGPoint(x: 1, y: 0)
self.layer.insertSublayer(gradient, at: 0)
}
}

viewDidLayoutSubviews() 中调用 initStyle() 无效。

func initStyle() {
submitBtn.applyGradient(colors: [#colorLiteral(red: 0.1176470588, green: 0.3882352941, blue: 0.5254901961, alpha: 1), #colorLiteral(red: 0.2941176471, green: 0.9098039216, blue: 0.9529411765, alpha: 1)])
submitBtn.layer.cornerRadius = 15.0
submitBtn.layer.masksToBounds = true
}

我正在以编程方式创建所有 UI 元素。我已正确设置约束并且正在运行。

lazy var submitBtn: UIButton = {
let btn = UIButton(type: .system)
btn.translatesAutoresizingMaskIntoConstraints = false
btn.setTitle("SUBMIT", for: .normal)
return btn
}()

如何让它工作?


仅当我将 initStyle() 放在 viewDidAppear() 而不是 viewDidLayoutSubviews() 时才会显示渐变,这会造成延迟在显示按钮渐变。我想避免这种延迟。所以我将它添加到 viewDidLayoutSubviews 中,但是渐变没有出现。

最佳答案

我认为这里的问题是在调用梯度函数时 self.bounds 为 0。稍后尝试调用它,例如 viewWillAppear 或调用 view.layoutSubViews 来触发 iewDidLayoutSubviews()

关于ios - 添加到 viewDidLayoutSubviews 时按钮渐变不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56304384/

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