ios - 阴影不符合 UITableViewCell 中 View 的形状

标签 ios swift uitableview shadow

我有一个 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 时会出现问题。每个单元格下的阴影如下所示:

enter image description here

这是我滚动一次时的样子 怎样才能保证阴影效果正常,而不是像上图那样?

enter image description here

最佳答案

您在第一次加载时看到的错误阴影宽度问题与使用 paddingView 的边界有关单元格的 subview 布局之前。

当单元格被实例化时,它可能以错误的初始宽度开始(基于 Storyboard),而不是最初设置为 tableView 的实际宽度。

问题在滚动关闭然后在屏幕上消失的原因是重复使用的单元格具有正确的 paddingView 边界宽度,因此阴影现在显示正确。

这是一个常见问题,因为自调整单元格最初没有正确布局,直到表格被(滚动或)重新加载。有several workarounds回溯将近两年,从重新加载表格到强制布局传递各不相同。

两者都确保单元格初始宽度在第一次使用时是正确的。

如果您支持旧版本的 iOS,则可能会出现此问题。我不记得哪个确切版本的 iOS 彻底修复了它,但我已经有很长一段时间没有解决这个问题了。

关于ios - 阴影不符合 UITableViewCell 中 View 的形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37960890/

相关文章:

objective-c - 如何对表的数据进行排序 按部分的字母顺序查看

ios - 带有 Section 和 Parse 作为后端服务器的 UITableViewController

ios - 单点触控 : Force UITableView to recalculate height of each cell without reloading data

swift - 如何使用红蜘蛛验证用户身份

xcode - 错误 : Failed to connect outlet from . .. 到 (NSTextField):缺少 setter 或实例变量

ios - ios swift 中的并发任务执行

ios - AFHTTPRequestOperationManager 缓存

ios - swift 将个人的名字从 firebase 读入 UILabel

ios - 隐藏 UISearchDisplayController 的 UISearchBar

ios - 如何使 UIButton 始终位于加载的 subview Controller 之上?