Ios TableViewCell边框和阴影向下滚动时(或从ipad切换到iphone时)

Ios TableViewCell边框和阴影向下滚动时(或从ipad切换到iphone时),ios,swift,xcode,uitableview,Ios,Swift,Xcode,Uitableview,首先,我为标题感到抱歉,但我不确定是什么导致了我的问题 我已经设置了我的TableViewCells在iPad(ios 9)上开发,直到边框和阴影符合我的要求。。。但当我在iPhone6(iOS 11.3)上运行该应用程序时,出现了一些奇怪的变化 这就是屏幕的启动方式,您可以在第二个单元格中看到阴影不规则,在第三个单元格中看到方形背景 这是向下滚动,所有单元格都有阴影和边框问题 我在单元格内使用UIView添加间距和样式,因此视图具有阴影和角半径,而cell.backgroundColor=

首先,我为标题感到抱歉,但我不确定是什么导致了我的问题

我已经设置了我的TableViewCells在iPad(ios 9)上开发,直到边框和阴影符合我的要求。。。但当我在iPhone6(iOS 11.3)上运行该应用程序时,出现了一些奇怪的变化

这就是屏幕的启动方式,您可以在第二个单元格中看到阴影不规则,在第三个单元格中看到方形背景

这是向下滚动,所有单元格都有阴影和边框问题

我在单元格内使用UIView添加间距和样式,因此视图具有阴影和角半径,而cell.backgroundColor=UIColor.clear

对于完全或部分脱离屏幕的单元格,看起来单元格背景变回了白色

有什么想法吗?谢谢


编辑:

谢谢你的夸奖!我分享以下代码片段:

        cell.backView.layer.borderWidth = 5
        cell.backView.layer.borderColor = UIColor.clear.cgColor
        cell.backView.layer.cornerRadius = 10
        let shadowPath2 = UIBezierPath(rect: cell.backView.bounds)
        cell.backView.layer.masksToBounds = false
        cell.backView.layer.shadowColor = UIColor.black.cgColor
        cell.backView.layer.shadowOffset = CGSize(width: CGFloat(1.0), height: CGFloat(3.0))
        cell.backView.layer.shadowOpacity = 0.5
        cell.backView.layer.shadowPath = shadowPath2.cgPath
        cell.backgroundColor = UIColor.clear
因此,backView是包含所有单元格内容的视图。有一些东西是不需要的,因为我正在尝试一些东西,但据我所知,不应该是原因

顺便说一句,当我今天运行代码时,它看起来应该是这样的,但是我没有对tableView做任何事情,我正在处理一个完全不同的问题,所以这个问题没有正式解决

此外,我注意到,从一个赛格回来后,有时,阴影只覆盖了牢房的下半部分。。。这可能是同一个问题吗?

问题诊断: 问题在于,每个单元都被视为一个单独的视图,每个视图之间没有重叠。因为没有重叠,阴影视图的内容被剪裁到边界。这使得清晰的背景色不相关(无重叠=透明度无关紧要)

解决方案: 要将每个单元的阴影延伸到单元边界之外(实际上忽略视图的大小),请设置
cell.clipsToBounds=false

这将使阴影越过单元格的边界。

我认为你做的比你需要做的更多

假设您已将
后视图添加到IB中的单元原型中,并且该视图中包含所有其他内容(标签、图表等),您可以将其添加到单元类中:

override func awakeFromNib() {

    backView.layer.cornerRadius = 10.0
    backView.layer.masksToBounds = false
    backView.layer.shadowColor = UIColor.black.cgColor
    backView.layer.shadowOffset = CGSize(width: 1.0, height: 3.0);
    backView.layer.shadowOpacity = 0.5

}
结果如下:


不需要任何其他代码。。。当滚动/旋转设备等时,阴影将保持其外观。

在我的例子中,问题是cliptobunds
我在CollectionView和CollectionViewCell及其子项中取消选中它。

看起来阴影大小的计算不正确(“错误”阴影看起来比“正确”阴影大得多)。可以显示设置阴影的代码吗?可以共享此单元格的代码吗?可以与我们共享代码吗?尝试添加cell.clipsToBounds=false和cell.contentView.clipsToBounds=false。非常感谢,你是对的,我应该在类中添加代码,而不是在控制器中。。。这很有帮助。。。正如你现在所说的,这个问题是随机的,现在我再也看不到了。。。但是我没有做任何改变。。。所以我会实现这个,如果我没有问题,我会在几天内把它标记为答案!