gpt4 book ai didi

ios - 如何在 UITableView 本身上设置 DropShadow

转载 作者:搜寻专家 更新时间:2023-11-01 07:13:36 24 4
gpt4 key购买 nike

我正在尝试在以编程方式添加的 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com