- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试在以编程方式添加的 UITableView
上设置投影。
框架高度被设置为屏幕的特定百分比。所以我想在 tableview 本身上设置一个阴影。
我尝试执行以下操作:
tableview_results.layer.shadowPath = UIBezierPath(rect: tableview_results.frame).cgPath
tableview_results.layer.shadowColor = UIColor.black.cgColor
tableview_results.layer.opacity = 1
tableview_results.layer.shadowOffset = CGSize.zero
tableview_results.layer.shadowRadius = 10
然而这似乎并没有做任何事情。
当我尝试搜索解决方案时,我只找到有关如何在 UITableView
的最后一个单元格上设置阴影的内容。然而,这对我不起作用,因为只有在显示最后一个单元格时才会显示阴影。
我需要阴影始终出现在 UITableView
上。
最佳答案
阴影路径应设置为 tableview_results.bounds
而不是 frame
。边界是 TableView 本身的坐标系中 TableView 周围的矩形,这是指定阴影路径的正确坐标系。或者,您可以根本不设置阴影路径,阴影将绘制在正确的位置(尽管如果可以可靠地设置路径,显式设置路径可能会带来性能优势)。
您还需要将图层的 shadowOpacity
(而不是 opacity
)设置为 1。并且您需要告诉 tableview_results
不剪辑到边界
。所以像这样:
tableview_results.layer.shadowPath = UIBezierPath(rect: tableview_results.bounds).cgPath
tableview_results.layer.shadowColor = UIColor.black.cgColor
tableview_results.layer.shadowOpacity = 1
tableview_results.layer.shadowOffset = CGSize.zero
tableview_results.layer.shadowRadius = 10
tableview_results.clipsToBounds = NO;
对于最后一行,如果您觉得仅与图层对话使代码更清晰,则可以等效地使用 tableview_results.layer.masksToBounds = NO
。
请注意,关闭裁剪有一个副作用:现在您可能会看到超出表格 View 本身边界的表格 View 单元格!所以可能有更好的方法来获得阴影效果。例如,您可以将 TableView 包装在一个紧密绑定(bind) TableView 的简单 super View 中,并将阴影赋予该 super View 。只是一个想法。
关于ios - 如何在 UITableView 本身上设置 DropShadow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43560769/
我是一名优秀的程序员,十分优秀!