ios - Swift UITableViewCell 阴影没有出现
问题描述
我正在尝试创建在我的其他 UIViewControllers 中正常工作的自定义表格视图单元格。但是,在我的一个控制器中,阴影没有增长,我几乎看不到阴影。
这是阴影显示为红色的图像,您可以看到它几乎不可见。
我的单元格在 contentView 中添加了一个 UIView 以创建浮动单元格效果——我的控制器中使用了相同的代码和相同的故事板布局,但这是发生阴影问题的唯一表格视图——所以我一定遗漏了一些东西。
我的addShadow
扩展:
extension UIView {
func addShadow(offset: CGSize, color: UIColor, radius: CGFloat, opacity: Float) {
layer.masksToBounds = false
layer.shadowOffset = offset
layer.shadowColor = color.cgColor
layer.shadowRadius = radius
layer.shadowOpacity = opacity
}
}
我awakeFromNib
在自定义单元格上:
::cellContentView
是我的 UIView 添加到contentView
单元格的基础。
override func awakeFromNib() {
super.awakeFromNib()
self.backgroundColor = .clear
self.selectionStyle = .none
cellContentView?.layer.masksToBounds = true
cellContentView?.round(corners: [.topLeft, .topRight, .bottomLeft, .bottomRight], radius: 10)
cellContentView?.addShadow(offset: CGSize(width: 40, height: 60), color: UIColor.red, radius: 10, opacity: 1)
cellContentView?.layer.shouldRasterize = true
}
注意:这.round
是我所有单元格上使用的扩展名。
无论我为这个阴影添加什么半径或偏移量,它都不会比图像大。此外,我的控制器中的其他单元都不需要shouldRasterize
设置该属性,但确实如此。
有谁知道这里发生了什么?谢谢 :)
编辑
奇怪的是,如果我在我的视图周围添加约束以保持我的视图和单元格内容视图之间的差距很大,背景颜色就会消失 - 这在情节提要中设置为白色。
解决方案
您应该调用 layoutSubviews 方法。因为在视图上传后应该添加阴影
override func awakeFromNib() {
super.awakeFromNib()
//init methods
}
override public func layoutSubviews() {
super.layoutSubviews()
//Added shadow
self.reloadLayers()
}
private func reloadLayers() {
self.layer.cornerRadius = 5
self.addShadow(.TransactionCell)
}
我希望它有帮助
推荐阅读
- javascript - 单击按钮时启动文本动画,如果再次单击按钮,则清除并再次启动动画
- sapui5 - 如何使用 SAP UI5 生成 OTP 和验证?
- flutter - 避免多次解码图像
- javascript - 无法将变量名称从一个节点模块发送到另一个节点模块以将其用作使用 socket.io 的聊天应用程序的房间名称
- java - Itext 生成的 pdf 无法在 Adobe 阅读器中打开?
- jquery - 将数据表导出到橙色背景的 Excel
- javascript - 将使用节点 v6 制作的项目更新到节点 v10
- postgresql - 远程连接到 Postgres 的持续问题(连接被拒绝)
- java - 在 docker 映像中构建 java 项目的问题(内存问题)
- .htaccess - 如何将单词附加到 URL