gpt4 book ai didi

ios - TableView背景渐变毛刺

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

我使用以下代码为表格 View 设置了渐变图层:

func setGradientToTableView(_ topColor:UIColor, _ bottomColor:UIColor) {

let gradientBackgroundColors = [topColor.cgColor, bottomColor.cgColor]
let gradientLocations = [0.0,1.0]

let gradientLayer = CAGradientLayer()
gradientLayer.colors = gradientBackgroundColors
gradientLayer.locations = gradientLocations as [NSNumber]

gradientLayer.frame = tableView.bounds
let backgroundView = UIView(frame: tableView.bounds)
backgroundView.layer.insertSublayer(gradientLayer, at: 0)
tableView.backgroundView = backgroundView

}

还有这个:

setGradientToTableView(UIColor(red: 125/255.0, green: 125/255.0, blue: 125/255.0, alpha: 1.0), UIColor(red: 125/255.0, green: 125/255.0, blue: 0/255.0, alpha: 1.0)).

当我运行应用程序时,问题就来了。渐变层将是 Storyboard中选择的设备和方向的 TableView 的大小。

有人知道怎么解决吗? - 顺便说一句,我对表格 View 的约束是导航栏底部、前导、尾随和安全区域底部

编辑:这是截图

enter image description here

最佳答案

可能的问题是您在 viewDidLoad() 方法中设置了渐变,其中 TableView 尚未绘制,其框架是 XIB/storyboard 的默认框架。你应该在 didLayoutSubviews() 中这样调用它:

var gradientLayer: CAGradientLayer?
func didLayoutSubviews() {
if (gradientLayer == nil) {
setGradientToTableView(UIColor(red: 125/255.0, green: 125/255.0, blue: 125/255.0, alpha: 1.0), UIColor(red: 125/255.0, green: 125/255.0, blue: 0/255.0, alpha: 1.0))
}
}

在您的类中保留对渐变图层的引用,以确保您只设置一次渐变,因为 didLayoutSubviews 被调用了多次。

关于ios - TableView背景渐变毛刺,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48044227/

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