ios - UITableViewCell的CAGradient层问题

标签 ios swift uitableview cagradientlayer

好的,所以我需要为自定义UITableViewCell添加渐变。

在单元初始化上,我添加了它的子代并约束了它们。

之后,我需要为其子级之一添加一个渐变,即UIImageView

我这样做是:

imgView.layer.addSublayer(mainGradient(imgView.frame.size.width, imgView.frame.size.height))


看起来问题在于,在UITableViewCell.init上实际上没有像元框架,因此一旦imgView框架通过约束设置,它也就没有框架,因此渐变也就没有一个框架。

我试过在layoutSubviews方法上添加该层,但结果是仅在滚动tableView时才添加该层,并且每次滚动时,都会添加一个新层,这将导致每个滚动条都变暗。

关于我该怎么做的任何想法?

最佳答案

在表格视图控制器中,创建对渐变图层的引用,例如:

var gradientLayer: CAGradientLayer!


在您的自定义单元类中,创建该层并将其添加为init函数中的子层。

然后,也在您的自定义单元格类中,实现layoutSubviews()

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

关于ios - UITableViewCell的CAGradient层问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55542797/

相关文章:

ios - 在 Swift 中将类属性添加到协议(protocol)

ios - SwiftUI ForEach View 第一次未更新

ios - Xcode TableView 单元格不会调整高度

ios - iphone css 显示表不允许文本复制

ios - 如何从 ios 将订单 ID 发送到 paypal

ios - React Native 图像和声音无法在真实设备上播放

iOS - 在同一方法中调用代码块

ios - 仅 AssetCatalog LaunchImage Landscape - iPhone 4S/5/5S 未显示

ios - 我的表格 View 在滚动时重用选定的单元格——在 SWIFT 中

ios - iOS 7 中 UITableView 的 contentInset 规则?