我在做一个项目。我有大量的 UITableView是设置为清晰的颜色。他们的意见的背景颜色设置为我的自定义颜色,一切都很好的 IPhone。
UITableView
这个问题出现在 IPad上! 我几乎尝试了所有的方法,但是我的 UITableView是白色的。
我检查了其他话题,像: UITableView 的背景色在 iPad 上总是灰色的,但没有工作。而且,我的问题不是灰色的,它是白如雪!
可能是什么原因呢?
根据我的经验,某些版本的 iOS 在调用委托的 tableView:willDisplayCell:forRowAtIndexPath:之前会设置 UITableViewCell 的 backoundColor。在该方法中重置为自定义颜色可以修复它。
tableView:willDisplayCell:forRowAtIndexPath:
不要设置背景颜色,试着使用背景视图,像这样:
- (void)viewDidLoad { self.tableView.backgroundView = [UIView new]; self.tableView.backgroundView.backgroundColor = [UIColor clearColor]; }
我曾经遇到过这样的问题,使用 backoundColor 并不总是产生效果,但是设置一个背景视图就可以了。
好消息: 根据发布说明,iOS10:
在 iPad 上运行时,为 UITableViewCell 设置背景色 在故事板中现在是受人尊敬的。
版本 < 10:
我在 iOS8(8.3)中看到了这一点。即使在 IB 中,我的细胞是“清晰的颜色”,它们的内容视图是“清晰的颜色”,它们也会呈现为白色。一个不完美但合理的解决方案,因为它仍然从 IB 那里获取价值:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { ... cell.backgroundColor = cell.contentView.backgroundColor; return cell; }
似乎我排队等候的可重复使用的电池在 iPad 上的背景被迫变成了白色。我能够使用视图层次结构调试器来确定这一点。
一旦我这样做了,我就可以使用表的背景颜色,而不必设置背景视图,虽然这也可以工作。
基于 Ben Flynn 的答案构建... cell.contentView 背景颜色不一定等于 cell.back 颜色。在这种情况下,我发现这种方法可以在更多情况下解决 iPad 白色背景的问题:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { ... cell.backgroundColor = cell.backgroundColor; return cell; }
虽然这份声明看起来荒谬而疯狂,但它解决了问题。
我将 Storyboard与 UITableViewControlrs一起使用,因此最简单的决定是将所有控制器子类化,并将此方法添加到父类
Storyboard
UITableViewControlrs
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{ if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad){ cell.backgroundColor = [UIColor clearColor]; } }
我有一个表格视图,里面有许多不同的单元格,每个单元格都有不同的颜色。
来自“ Ben Flynn cell.backgroundColor = self.contentView.backgroundColor”的回答无法做到这一点。 原因是 self.contentView.backgroundColor为零,所以你所做的只是清除 cell.backgroundColor = nil。
cell.backgroundColor = self.contentView.backgroundColor
self.contentView.backgroundColor
cell.backgroundColor = nil
基本上是 Xcode 的 bug (我认为,是的,它很糟糕!),cell.backgroundColor仍然有颜色,但它不能显示。
cell.backgroundColor
经过一段时间的调试,基于@Ray W 的答案,这里是我的解决方案。
class YourCustomCell: UICollectionViewCell { override func awakeFromNib() { super.awakeFromNib() backgroundColor = backgroundColor // Tricky to re-apply the background color } }
这可以在故事板中实现,具体如下:
结果: iPad 和 iPhone 模拟器视图看起来一样
我只是有这个问题,通过改变视图的背景颜色(相对于 tableView 的背景颜色)来修复它。似乎在 iPad 上,这是第一次使用的一个,在我的情况下,它被设置为白色。
您可以通过在 appDelegate 文件中设置外观 API 来解决这个问题:
斯威夫特:
UITableViewCell.appearance().backgroundColor = UIColor.clearColor()
SWIFT 我也有这个问题。还不错。但是 tableViewCell 显示为白色。垫子。我想展示一下我是怎么用雨燕修好它的。
像@IBOutlet 那样将 tableViewCell 连接到 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
很奇怪,我不知道这里发生了什么但是这个帮我解决了问题。
SWIFT
这也是发生在我身上的事。我的 SWReveaViewController 中的表格视图在我的 iPad 上看起来是白色的,而在我的 iPhone 上看起来是清晰的(这就是我想要的背景图片)。我尝试了以上所有的方法,但是这是我在 viewDidLoad ()中得到的结果。
tableView.backgroundView = UIImageView(image: UIImage(named: "gray")) tableView.backgroundView?.backgroundColor = .clearColor() UITableViewCell.appearance().backgroundColor = .clearColor()
正如在 UIKit说明的发布说明中所提到的,iOS 10 Beta 4似乎已经解决了这个问题:
UIKit
我把这个 bug 放在我的 UITableViewCell子类中来解决这个问题:
UITableViewCell
从 NIB 文件加载单元格时:
override func awakeFromNib() { super.awakeFromNib() self.backgroundColor = UIColor.clear }
当单元被系统重用时
override func prepareForReuse() { super.prepareForReuse() self.backgroundColor = UIColor.clear }
正如美国广播公司(Animeshporwal)所说,ios10应该在 Interface Builder 上解决这个问题。
我有一个具有半透明表视图单元格的透明表视图。在创建表时,我将表视图的背景色设置为清除。这适用于所有的 iOS/设备组合,除了 iPad + iOS8,它的背景颜色仍然是白色。
对我来说,设置单元格的背景颜色为半透明,内容视图的背景颜色为清晰的作品,因为我这样做的每个 tableView(_ tableView: UITableView, cellForRowAt indexPath)。对我来说,问题只是表视图的背景仍然是白色的。
tableView(_ tableView: UITableView, cellForRowAt indexPath)
关于这个问题,我尝试了所有我找到的组合,但是我实际上需要做的唯一一件事情是在每个 tableView(_ tableView: UITableView, cellForRowAt indexPath)上将 桌面视图背景设置为透明。虽然不是超级直觉,但至少很管用。校对: P
这能帮我解决这个问题
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { tableView.backgroundColor = UIColor.clear }
SWIFT 3 XX
把这个放进去
UITableViewCell.appearance().backgroundColor = UIColor.clear
在 AppDelegate
AppDelegate
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool