我正在开发一个在tableViewCell内显示头像图片和一些个人资料信息的应用。将相同的头像图片设置为单元格背景,然后在其上方有另一个带有渐变的UIView,该渐变是使用CAGradientLayer创建的。
问题是,当显示我的单元格时,渐变没有正确的帧大小(应该是单元格的大小),而是在右侧留有空白。当我滚动tableView时,渐变会正确调整大小。
这是我创建渐变的方式:
func awakeFromNib() {
let startColor = UIColor.gradientOverlay.cgColor //Defined elsewhere
let endColor = UIColor.black.cgColor
gradientLayer.frame = gradientView.frame
gradientLayer.startPoint = CGPoint(x: 0.5, y: 0)
gradientLayer.endPoint = CGPoint(x: 0.5, y: 1)
gradientLayer.colors = [startColor, endColor]
self.gradientView.layer.addSublayer(gradientLayer)
}
而且,我已经像这样重写了layoutSubviews
方法:
override func layoutSubviews() {
super.layoutSubviews()
gradientLayer.frame = gradientView.frame
self.layoutIfNeeded()
}
呈现视图时屏幕看起来像这样(我已经删除了敏感信息:]
注意,标签右边的颜色会发生变化。最后一个颜色列仅是模拟器屏幕的边框。
你们碰巧知道如何解决这个问题吗?
替换
gradientLayer.frame = gradientView.frame
with
gradientLayer.frame = gradientView.bounds
并对此行self.layoutIfNeeded()
进行评论