【发布时间】:2020-06-27 13:51:51
【问题描述】:
我在我的应用程序中发现了一些回归,我很确定现在才开始在 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.zPosition 和view.backgroundColor=UIColor.clearColor 一起玩,但没有成功。
有人知道那里发生了什么吗?
更新:
同样的问题也发生在 UICollectionView 中。
回答 cmets:
- 将 plist 中的
UIUserInterfaceStyle更改为“Light”没有帮助。 - 在方法结束时设置 shadowColor - 没有帮助。
- 在 cellforrow 中添加阴影而不是 willdisplaycell - 没有帮助
【问题讨论】:
-
尝试在 info.plist 中添加
UIUserInterfaceStyle Light -
@BenRockey 是对的,如果您的手机启用了暗模式,则添加此
UIUserInterfaceStyle Light 键以使您的应用主题变亮或使暗模式关闭然后检查... -
您将角半径和 clipstobounds = true 赋予视图,然后赋予阴影..它根本不起作用,因为您的边框会被剪裁...使用两个视图..外部视图带有阴影和带有圆角半径的内部视图...外部视图的背景颜色也应该清晰。
-
我遇到了一些阴影没有被应用的问题,你可以尝试在方法结束时设置 shadowColor 吗?
-
你试过在 cellforrow 中添加阴影而不是 willdisplaycell 吗?
标签: ios objective-c uitableview uikit shadow