何时为具有动态高度的自定义UITableViewCell设置shadowPath值

时间:2018-07-07 15:08:45

标签: ios swift uitableview

我有一个自定义单元格,带有bg,标题,字幕,说明和对勾按钮。字幕和说明是可选的,因此像元高度是动态的。另外,我使用AutoLayout。

我想在“背景”(UIImageView)中添加阴影

enter image description here

override func awakeFromNib() {
super.awakeFromNib()

bg.layer.cornerRadius = 3
bg.layer.shadowColor = #colorLiteral(red: 0.1450980392, green: 0.1490196078, blue: 0.368627451, alpha: 1).cgColor
bg.layer.shadowOffset = CGSize(width:0,height:4)
bg.layer.shadowRadius = 1
bg.layer.shadowOpacity = 0.1

bg.layer.masksToBounds = false
layer.masksToBounds = false
clipsToBounds = false
isOpaque = false

let shadowBounds = CGRect(x: 0, y: 0, width: bg.frame.width, height: bg.frame.height)
bg.layer.shadowPath = CGPath(roundedRect: shadowBounds, cornerWidth: 3, cornerHeight: 3, transform: nil)
bg.layer.shouldRasterize = true
}

我想使用shadowPath来提高TableView的性能。没有shadowPath,shadow会按预期工作。

enter image description here

如果我设置bg.layer.shadowPath值,则阴影的高度会很高。

enter image description here

如果我在awakeFromNib中打印bg.frame.height,则将是故事板中的167。但是没有说明的单元格bg图像高度约为78。 如何将shadowPath大小绑定到bg图像大小?

我注意到,调用super.layoutSubviews()后,单元格的contentView.frame.height为预期的95点,但是背景图像(contentView的子级)高度比contentView高(147 pt)。

0 个答案:

没有答案