繁体   English   中英

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

[英]UITableViewCell shadow disappears on scroll (iOS 13)

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

它曾经工作得很好,但现在我们开始看到一些奇怪的东西......我们添加到每个单元格的阴影突然在 tableview 滚动上自行消失。

图片说明

该应用程序使用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更改为“Light”并没有帮助。
  2. 在方法结束时设置 shadowColor - 没有帮助。
  3. 在 cellforrow 而不是 willdisplaycell 中添加阴影 - 没有帮助

我也遇到了麻烦。 我发现问题是由于某种原因,当显示单元格时, layer.clipsToBound 被重置为 True 修复它所需要做的就是当tableViewDelegate调用viewWillDisplayCell设置layer.clipsToBound = false

这对我有用。

尝试在 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
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM