Sam*_*uël 5 uitableview ios13 xcode11
我在cellForRowAtIndexPath
使用中为tableview单元格选择了颜色
let backgroundView = UIView()
backgroundView.backgroundColor = UIColor.grey3 //custom color
cell.selectedBackgroundView = backgroundView
Run Code Online (Sandbox Code Playgroud)
由于我使用Xcode 11.0构建,因此颜色不再在iOS 13设备或模拟器上传播到单元的子视图。如果我使用Xcode 11.0在iOS 12.2模拟器上构建,它仍然可以工作。
任何人都知道导致此行为的更改是什么?我正在使用.xib文件。
来自 Apple 的iOS 13 发行说明:
当单元格被突出显示或被选中时,UITableViewCell 类不再更改 contentView 及其任何子视图的 backgroundColor 或 isOpaque 属性。如果您在 contentView 内部(并包括)单元格的任何子视图上设置不透明的 backgroundColor,则单元格突出显示或被选中时的外观可能会受到影响。解决子视图任何问题的最简单方法是确保它们的 backgroundColor 设置为 nil 或 clear,并且它们的 opaque 属性设置为 false。但是,如果需要,您可以覆盖 setHighlighted( :animated:) 和 setSelected( :animated:) 方法,以便在移入或移出突出显示和选定状态时手动更改子视图上的这些属性。
我的快速测试确认这将是您的情况的原因。
带有绿色背景标签的单元格,橙色视图为.selectedBackgroundView
。
iOS 12:
iOS 13:
如果您使用层次结构调试器,您会看到在 iOS 13 中contentView
位于backgroundView
和之上selectedBackgroundView
。
这可以通过设置解决
contentView.backgroundColor = nil
Run Code Online (Sandbox Code Playgroud)
在 awakeFromNib
或在情节提要中将contentView
's设置backgroundColour
为 clear
归档时间: |
|
查看次数: |
468 次 |
最近记录: |