以编程方式创建的 UITableView 在 iOS9 中始终为白色
Programmatically created UITableView always white in iOS9
我无法让我的 UITableView 在启动时更改颜色 iOS 9.
我在代码中创建了一个 UITableView
,它是我的自定义视图的子视图,并在我的子视图的 init
方法中设置了背景颜色。
myTableView.backgroundColor = UIColor.yellowColor()
但它保持白色。
我使用 View Debugging > Capture View Hierarchy 来确认它是 table 视图本身而不是 table 视图单元格是白色的。 (但为了以防万一,我还是将单元格设置为清除)。
我看到很多旧帖子都在谈论类似的问题(比如 this, this and this and )所以我尝试了
myTableView.backgroundView = nil // or UIView()
或
myTableView.backgroundView.backgroundColor = UIColor.clearColor()
但这些也不起作用。
我发现如果我这样做了
myTableView.backgroundColor = UIColor.yellowColor()
在原始布局之后的某个时间(例如,点击按钮),然后它会改变背景颜色。
这只是 iOS 9.3 中的一个问题。在我使用 iOS 8.1 和 8.4 进行的测试中,我在 init
期间设置背景颜色时没有遇到任何问题。
还有什么我可以尝试的吗?
看起来其他人也遇到了这个错误。作为一种解决方法,我使用了 UIImageView(具有我想要的颜色)并将其分配给 uitableview 背景。希望它也适合你!
tableView.backgroundView = UIImageView(image: UIImage(named: "yellowColorImage"))
我不确定这是不是最佳答案,但它确实有效。我通过在 init 方法中执行此操作将颜色设置延迟到下一个 运行 循环:
dispatch_async(dispatch_get_main_queue()) {
self.myTableView.backgroundColor = UIColor.clearColor()
}
系统中将背景设置为白色的任何内容现在都会恢复。
init
方法不是修改 UI 属性的好地方,因为尚未构建视图层次结构。
尝试对 UIView
个子类使用 layoutSubviews
或 didMoveToWindow
:
var customColor = UIColor.yellowColor()
override func layoutSubviews() {
super.layoutSubviews()
self.backgroundColor = customColor
}
override func didMoveToWindow() {
super.didMoveToWindow()
self.backgroundColor = customColor
}
您还可以在 UIViewController
子类中使用 viewDidLoad
或 awakeFromNib
方法:
override func viewDidLoad() {
super.viewDidLoad()
customTableView.backgroundColor = UIColor.yellowColor()
}
override func awakeFromNib() {
super.awakeFromNib()
customTableView.backgroundColor = UIColor.yellowColor()
}
我无法让我的 UITableView 在启动时更改颜色 iOS 9.
我在代码中创建了一个 UITableView
,它是我的自定义视图的子视图,并在我的子视图的 init
方法中设置了背景颜色。
myTableView.backgroundColor = UIColor.yellowColor()
但它保持白色。
我使用 View Debugging > Capture View Hierarchy 来确认它是 table 视图本身而不是 table 视图单元格是白色的。 (但为了以防万一,我还是将单元格设置为清除)。
我看到很多旧帖子都在谈论类似的问题(比如 this, this and this and
myTableView.backgroundView = nil // or UIView()
或
myTableView.backgroundView.backgroundColor = UIColor.clearColor()
但这些也不起作用。
我发现如果我这样做了
myTableView.backgroundColor = UIColor.yellowColor()
在原始布局之后的某个时间(例如,点击按钮),然后它会改变背景颜色。
这只是 iOS 9.3 中的一个问题。在我使用 iOS 8.1 和 8.4 进行的测试中,我在 init
期间设置背景颜色时没有遇到任何问题。
还有什么我可以尝试的吗?
看起来其他人也遇到了这个错误。作为一种解决方法,我使用了 UIImageView(具有我想要的颜色)并将其分配给 uitableview 背景。希望它也适合你!
tableView.backgroundView = UIImageView(image: UIImage(named: "yellowColorImage"))
我不确定这是不是最佳答案,但它确实有效。我通过在 init 方法中执行此操作将颜色设置延迟到下一个 运行 循环:
dispatch_async(dispatch_get_main_queue()) {
self.myTableView.backgroundColor = UIColor.clearColor()
}
系统中将背景设置为白色的任何内容现在都会恢复。
init
方法不是修改 UI 属性的好地方,因为尚未构建视图层次结构。
尝试对 UIView
个子类使用 layoutSubviews
或 didMoveToWindow
:
var customColor = UIColor.yellowColor()
override func layoutSubviews() {
super.layoutSubviews()
self.backgroundColor = customColor
}
override func didMoveToWindow() {
super.didMoveToWindow()
self.backgroundColor = customColor
}
您还可以在 UIViewController
子类中使用 viewDidLoad
或 awakeFromNib
方法:
override func viewDidLoad() {
super.viewDidLoad()
customTableView.backgroundColor = UIColor.yellowColor()
}
override func awakeFromNib() {
super.awakeFromNib()
customTableView.backgroundColor = UIColor.yellowColor()
}