父视图外的 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】:

所以我稍微改变了策略。 cells110pt 高,rectangle100pt 高。矩形位于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 阴影的主要内容,如果未能解决你的问题,请参考以下文章

带有切出段和阴影的 UIView

向我的 UIView 添加阴影的最佳方法是啥

UIView左右阴影

UIView 中的阴影没有渐变?

向使用 SnapKit 定位的 UIView 添加阴影

iOS:在 UIView 中绘制阴影