我有一个 TableView ,我试图在其中添加卡片式单元格。为此,我在单元格的内容 View 上添加了一个 UIView (paddingView),其大小略小于它。现在要创建阴影效果,我使用以下代码:
let path = UIBezierPath(rect: cell.paddingView.bounds)
cell.paddingView.layer.shadowPath = path.CGPath
cell.paddingView.layer.shadowOffset = CGSizeMake(0.5, 0.5)
cell.paddingView.layer.shadowOpacity = 0.4
第一次加载 TableView 时会出现问题。每个单元格下的阴影如下所示:
这是我滚动一次时的样子 怎样才能保证阴影效果正常,而不是像上图那样?
最佳答案
您在第一次加载时看到的错误阴影宽度问题与使用 paddingView
的边界有关在单元格的 subview 布局之前。
当单元格被实例化时,它可能以错误的初始宽度开始(基于 Storyboard),而不是最初设置为 tableView 的实际宽度。
问题在滚动关闭然后在屏幕上消失的原因是重复使用的单元格具有正确的 paddingView
边界宽度,因此阴影现在显示正确。
这是一个常见问题,因为自调整单元格最初没有正确布局,直到表格被(滚动或)重新加载。有several workarounds回溯将近两年,从重新加载表格到强制布局传递各不相同。
两者都确保单元格初始宽度在第一次使用时是正确的。
如果您支持旧版本的 iOS,则可能会出现此问题。我不记得哪个确切版本的 iOS 彻底修复了它,但我已经有很长一段时间没有解决这个问题了。
关于ios - 阴影不符合 UITableViewCell 中 View 的形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37960890/