父视图外的 UIView 阴影
Posted
技术标签:
【中文标题】父视图外的 UIView 阴影【英文标题】:UIView Shadow Outside Parent View 【发布时间】:2016-07-05 11:05:33 【问题描述】:我的问题很简单。我在UITableView
中使用自定义单元格。该单元格是透明的,在其内部contentView
有另一个UIView
是白色的,有圆角和底部的阴影。
问题是子视图的阴影没有完全显示。我不想进一步扩展contentView
以便有空间。
所以我的问题如下:我能否以某种方式使阴影显示在单元格的contentView
之外可见?或者还有什么我可以做的吗?
编辑:这是我的代码(它在 UITableViewCell 的子类中)
override func awakeFromNib()
super.awakeFromNib()
// Rectangle
let rectangle = CGRectMake(10, 10, UIScreen.mainScreen().bounds.width-20 , 100)
let rectView = UIView(frame: rectangle)
// Rectangle Customization
rectView.layer.cornerRadius = 10
rectView.backgroundColor = UIColor.whiteColor()
rectView.layer.shadowColor = UIColor.blackColor().CGColor
rectView.layer.shadowRadius = 3
rectView.layer.shadowOpacity = 0.25
rectView.layer.shadowOffset = CGSize(width: 0, height: 5)
contentView.addSubview(rectView)
【问题讨论】:
可以直接将 UIView 添加到单元格中。而不是 cell.contentView 只做 cell.addSubView(),而不是 cell.contentView.addSubView() 它不起作用。代码位于自定义单元类中。我如何访问那里的单元格?自动完成不会显示任何名为“单元格”的内容let cell = tableView.cellForRowAtIndexPath(indexPath) as! YourCustomCellClass
然后,cell.imageView.image = ...
没有indexPath
也没有tableView
..
这里,我已经回答了。很好,您更新了问题
【参考方案1】:
所以我稍微改变了策略。 cells
有 110pt 高,rectangle
有 100pt 高。矩形位于cell
内的 Y=10 处。
所以它触到了底部,没有足够的空间容纳阴影。
然后我只设置 Y=0,所以底部有 10 个点可用于阴影。然后为了让第一个单元格在顶部有一些空间(其他单元格的 10pts),我只是在 UITableView
的顶部添加了一个空白的 label
,它是 10pt 高。
不确定是否是最佳解决方案,但它有效,我对此很好。
【讨论】:
【参考方案2】:改变
contentView.addSubview(rectView)
到
addSubview(rectView)
【讨论】:
同样的问题。它似乎只是自动将其添加到contentView
。阴影仍未完全可见。
我只更改了那行。我也尝试将它移动到影子代码之前,但结果相同。
你能看到任何影子吗?
是的。阴影就在那里,但正如我所说,我猜 XCode 解释 addSubview
就像在这种情况下 contentView.addSubview
一样。它将rectView
添加到contentView
。
另外,为了得到我想要的结果,我可以将矩形向上移动 10pt(所以 Y 为 0),但我必须将它们全部向下移动 10pt,因为第一个单元格不会顶部没有 10pt 的空间。我该怎么做?以上是关于父视图外的 UIView 阴影的主要内容,如果未能解决你的问题,请参考以下文章