我正在做一个项目。我有很多UITableView
s设置为清晰的颜色。他们的视图的背景色设置为我的自定义颜色,并且在iPhone上一切正常。
这个问题出现在iPad上!我几乎尝试了所有方法,但是我UITableView
的颜色是白色。
我检查了其他主题,例如:UITableView backgroundColor在iPad上始终为灰色,但没有任何效果。另外,我的问题不是灰色,而是白如雪!
可能是什么原因呢?
我正在做一个项目。我有很多UITableView
s设置为清晰的颜色。他们的视图的背景色设置为我的自定义颜色,并且在iPhone上一切正常。
这个问题出现在iPad上!我几乎尝试了所有方法,但是我UITableView
的颜色是白色。
我检查了其他主题,例如:UITableView backgroundColor在iPad上始终为灰色,但没有任何效果。另外,我的问题不是灰色,而是白如雪!
可能是什么原因呢?
Answers:
好消息:根据发行说明,对于iOS 10:
在iPad上运行时,现在将遵守情节提要中为UITableViewCell设置的背景色。
对于版本<10:
我在iOS 8(8.3)中看到了这一点。即使在IB中,我的单元格为“纯色”,而其内容视图为“纯色”,它们仍将呈现为白色。一个不完美但合理的解决方案,因为它仍然采用IB的价值:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
...
cell.backgroundColor = cell.contentView.backgroundColor;
return cell;
}
似乎已出队的可重复使用单元在iPad上的背景被迫变为白色。我能够使用视图层次结构调试器来确定这一点。
完成此操作后,我就可以使用表格的背景颜色,而不必设置背景视图,尽管这样做也可以。
cell.contentView.backgroundColor = cell.backgroundColor
。在打印cell.contentView.backgroundColor
并注意到nil
之前,我删除了您的建议,并在情节
您可以通过在appDelegate文件中进行外观API设置来解决此问题:
迅速:
UITableViewCell.appearance().backgroundColor = UIColor.clearColor()
[UITableViewCell appearance].backgroundColor = [UIColor clearColor];
代替设置背景颜色,而是尝试使用背景视图,如下所示:
- (void)viewDidLoad {
self.tableView.backgroundView = [UIView new];
self.tableView.backgroundView.backgroundColor = [UIColor clearColor];
}
我遇到了使用backgroundColor并不总是能产生效果的问题,但是设置背景视图却可以正常工作。
以本·弗林的答案为基础... cell.contentView背景颜色不一定等于cell.background颜色。在这种情况下,我发现这可以解决更多情况下的iPad白色背景问题:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
...
cell.backgroundColor = cell.backgroundColor;
return cell;
}
尽管该声明看起来很荒谬和疯狂……但它解决了这个问题。
我有一个表格视图,里面有许多不同的单元格,每个单元格都有不同的颜色。
@Ben Flynn的答案cell.backgroundColor = self.contentView.backgroundColor
无法实现。原因是self.contentView.backgroundColor
无,所以您所做的只是清除cell.backgroundColor = nil
。
基本上,这是Xcode的错误(我认为,是的,很烂!), cell.backgroundColor
仍然有颜色,但是无法显示。
经过一段时间的调试后,基于@Ray W答案,这是我的解决方案。
class YourCustomCell: UICollectionViewCell {
override func awakeFromNib() {
super.awakeFromNib()
backgroundColor = backgroundColor // Tricky to re-apply the background color
}
}
以我的经验,某些版本的iOS在调用委托的之前先设置UITableViewCell的backgroundColor tableView:willDisplayCell:forRowAtIndexPath:
。使用该方法重置为自定义颜色即可修复该问题。
我通过将其放在UITableViewCell
子类中来解决此错误:
从NIB文件加载单元时:
override func awakeFromNib() {
super.awakeFromNib()
self.backgroundColor = UIColor.clear
}
当系统正在重用该单元时
override func prepareForReuse() {
super.prepareForReuse()
self.backgroundColor = UIColor.clear
}
正如animeshporwal所说,iOS 10应该可以在Interface Builder中解决此问题。
SWIFT 3.XX
放这个
UITableViewCell.appearance().backgroundColor = UIColor.clear
在 AppDelegate
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool
我使用Storyboard
with UITableViewControlrs
,所以最简单的决定是对所有控制器进行子类化,并将此方法添加到parent
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad){
cell.backgroundColor = [UIColor clearColor];
}
}
迅速
这也是我发生的事情。当我的iPhone上的SWRevealViewController中的表格视图看起来很清晰(这是我想要的背景图片)时,它在iPad上的SWRevealViewController中的表格视图显示为白色。我尝试了上述所有方法,但这最终在我的viewDidLoad()中为我工作。
tableView.backgroundView = UIImageView(image: UIImage(named: "gray"))
tableView.backgroundView?.backgroundColor = .clearColor()
UITableViewCell.appearance().backgroundColor = .clearColor()
我只是遇到了这个问题,并通过更改View的backgroundColor(而不是tableView的之一)来解决它。在iPad上似乎是最先使用的,在我的情况下,它被设置为白色。
迅速 我也有这个问题。在.phone上工作正常,但是tableViewCells在.pad上变为白色。以为我会展示如何使用swift修复它。
将tableViewCell作为@IBOutlet连接到viewController.swift,如下所示:
@IBOutlet weak var tvc1: UITableViewCell!
@IBOutlet weak var tvc2: UITableViewCell!
@IBOutlet weak var tvc3: UITableViewCell!
然后在viewDidLoad中放入以下内容:
tvc1.backgroundColor = tvc1.backgroundColor
tvc2.backgroundColor = tvc2.backgroundColor
tvc3.backgroundColor = tvc3.backgroundColor
很奇怪,我不知道这里发生了什么,但这为我解决了。
我有一个带有半透明表视图单元格的透明表视图。创建表格时,我将表格视图的背景色设置为清除。此功能适用于iPad / iOS 8以外的所有iOS /设备组合,背景颜色保持白色。
对我来说,将单元格的背景色设置为半透明,将内容视图的背景色设置为清除作品,因为我在每个单元格上都进行了设置 tableView(_ tableView: UITableView, cellForRowAt indexPath)
。对我来说,问题只是表格视图背景仍然是白色。
我尝试过找到有关此问题的所有组合,但实际上我唯一需要做的就是将每个表格视图的背景设置为透明tableView(_ tableView: UITableView, cellForRowAt indexPath)
。这不是超级直观,但至少可以起作用。:P