UITableViewCell阴影在滚动时消失(iOS 13)

时间:2020-03-16 12:38:04

标签: ios objective-c uitableview uikit shadow

我在我的应用程序中发现了一些回归,我敢肯定我现在才从Xcode 11.3.1(iOS 13)开始。

它曾经很好用,但是现在我们开始看到一些奇怪的东西了。添加到每个单元格的阴影在表格视图滚动中突然消失了。

image description

该应用使用UITableView,在内部委托方法willDisplayCell:中,我们将此代码称为:

dispatch_async(dispatch_get_main_queue(), ^{
    view.layer.cornerRadius = 4.0f;
    view.layer.borderWidth = 1.0f;
    view.layer.borderColor = [UIColor clearColor].CGColor;

    view.layer.shadowColor = shadowColor != nil ? shadowColor.CGColor : [[UIColor lightGrayColor] CGColor];
    view.layer.shadowOffset = CGSizeMake(0, 2.0f);
    view.layer.shadowRadius = 2.0f;
    view.layer.shadowOpacity = 1.0f;
    view.layer.masksToBounds = NO;
    view.layer.shadowPath = [UIBezierPath bezierPathWithRoundedRect:view.bounds cornerRadius:view.layer.cornerRadius].CGPath;
});

我尝试过view.layer.zPositionview.backgroundColor=UIColor.clearColor的运气不好。

有人知道那里发生了什么吗?

更新:

同样的问题也发生在UICollectionView中。

回答评论:

  1. 将plist中的UIUserInterfaceStyle更改为“浅色”没有帮助。
  2. 在方法末尾设置shadowColor-没有帮助。
  3. 在cellforrow中添加阴影而不是willdisplaycell-没有帮助

2 个答案:

答案 0 :(得分:0)

我也遇到了麻烦。我发现问题出在某种程度上,因为显示单元格的原因是 layer.clipsToBound重置为True 。解决此问题所需要做的就是 tableViewDelegate 调用 viewWillDisplayCell 设置layer.clipsToBound = false

对我有用。

答案 1 :(得分:-1)

尝试在波纹管代码的collectionview单元的awakefrom nib中添加阴影。

override func awakeFromNib() {
    super.awakeFromNib()
    view.layer.shadowColor = UIColor.red.cgColor
    view.layer.shadowOffset = CGSize(width: 0, height: 2)
    view.layer.shadowRadius = 2
    view.layer.shadowOpacity = 1
    view.layer.masksToBounds = false
}
相关问题