iOS:我的 TableView 标题的背景颜色在 iOS13 中不再改变
Posted
技术标签:
【中文标题】iOS:我的 TableView 标题的背景颜色在 iOS13 中不再改变【英文标题】:iOS: the background color of the header of my TableView is not changing anymore in iOS13 【发布时间】:2019-09-09 10:05:21 【问题描述】:我的 TableView 的标题在 ios13 中显示不好。不管我放什么颜色,现在总是显示为浅灰色...
- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section
//Section color & style
UITableViewHeaderFooterView *v = (UITableViewHeaderFooterView *)view;
v.backgroundView.alpha = 1;
v.textLabel.textColor = sectionColor;
v.textLabel.font = sectionFont;
v.textLabel.numberOfLines = 1;
v.textLabel.minimumScaleFactor = 0.5;
v.textLabel.adjustsFontSizeToFitWidth = YES;
v.backgroundView.backgroundColor = [UIColor blueColor];
iOS12:
iOS13:
奇怪的是,当我在调试器中一步一步停下来时,它在iOS13中显示了好的图像,但在应用程序中却没有:
任何建议,提前谢谢?
【问题讨论】:
我猜这可能与暗模式的适应有关。您可以尝试使用v.contentView.backgroundColor = ...
吗?
@R4N 就是这样,谢谢 :D 你可以把它放在答案中,我会验证它。
【参考方案1】:
我在我的一个应用中注意到了同样的事情。 然后在控制台看到一条日志信息:
在 UITableViewHeaderFooterView 上设置背景颜色已经 已弃用。请使用您想要的背景设置自定义 UIView 改为 backgroundView 属性。
将所需背景颜色的自定义UIView
设置为UITableViewHeaderFooterView
的backgroundView
解决了该问题。
代码示例
class SomeHeaderView: UITableViewHeaderFooterView
override init(reuseIdentifier: String?)
super.init(reuseIdentifier: reuseIdentifier)
configure()
required init?(coder aDecoder: NSCoder)
fatalError("init(coder:) has not been implemented")
private func configure()
let backgroundView = UIView(frame: .zero)
backgroundView.backgroundColor = .blue
self.backgroundView = backgroundView
【讨论】:
你能更具体一些并显示一些代码吗?通用视图并在willDisplayHeaderView
中设置其背景颜色对我不起作用
@GarySabo 我在我的答案中添加了一个代码示例。它在UITableViewHeaderFooterView
子类而不是UITableViewDelegate
中配置背景视图。
谢谢,但是 SomeHeaderView 会在哪里被实例化和使用呢? ?
没关系,我使用viewForHeaderInSection
实现了这个并且效果很好?【参考方案2】:
这对我有用。
v.contentView.backgroundColor = .blue
而不是
v.backgroundView.backgroundColor = .blue
【讨论】:
【参考方案3】:尝试添加覆盖视图并更改此视图的颜色。
UIView *coloredView = [[UIView alloc] init];
coloredView.backgroundColor = [UIColor blueColor];
[v addSubview:coloredView];
[[coloredView.leadingAnchor constraintEqualToAnchor:v.leadingAnchor constant:0] setActive:YES];
[[coloredView.trailingAnchor constraintEqualToAnchor:v.trailingAnchor constant:0] setActive:YES];
[[coloredView.topAnchor constraintEqualToAnchor:v.topAnchor constant:0] setActive:YES];
[[coloredView.bottomAnchor constraintEqualToAnchor:v.bottomAnchor constant:0] setActive:YES];
【讨论】:
以上是关于iOS:我的 TableView 标题的背景颜色在 iOS13 中不再改变的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS 7 中更改 TableView 的 IndexBar 的背景颜色?
Xamarin ios - 如何从静态 TableView 访问单元格
在通用应用程序中设置 UITableView 背景颜色(iOS 5)