我已经在Ray Wenderlich's tutorial之后的Cocoa应用上实现了集合视图(非常有帮助,因为Apple的API在这方面有多么糟糕和破坏)。
在本教程中,使用以下代码将集合视图的画布涂成黑色(所有代码都在视图控制器类'viewDidLoad()
方法中):
collectionView.layer?.backgroundColor = NSColor.black.cgColor
然而,当您使用 - 例如 - 魔术鼠标/滚轮来超过(“橡皮筋”)滚动时“偷看”的区域仍然是白色且非常分散注意力:
我试图让整个内容区域变黑。在我的故事板中,我将包含集合视图的NSScrollView
和NSClipView
的背景颜色设置为黑色,但它不会更改外观。
还尝试了程序化的替代方案:为scrollview设置插座并调用:
self.scrollview.backgroundColor = NSColor.black
self.scrollview.contentView.backgroundColor = NSColor.black
......没有效果。
另外,我试过了:
collectionView.superview?.layer?.backgroundColor = NSColor.black.cgColor
......但这也不起作用。
也不是:
self.view.layer?.backgroundColor = NSColor.black.cgColor
或:
self.view.window?.backgroundColor = NSColor.black
更新
我已将滚动视图的背景颜色设置为红色,将drawsBackground
设置为true
(在IB中以编程方式设置)。 NSScrollView
backgroundColor
财产的文档说:
此颜色用于绘制内容视图中不是的区域 由文档视图覆盖。
我已在运行时验证文档视图确实是我的集合视图:
if scrollview.documentView is NSCollectionView {
print("Document is collection")
}
但是,不显示红色,文档(集合视图)以外的区域保持白色。
更新2:我解雇了View Hierarchy Debugger,似乎drawsBackground
的值在运行时为false(我在中将其设置为true
代码和故事板)!:
(背景颜色本身似乎反映出来了)
答案 0 :(得分:5)
答案 1 :(得分:4)
用于在Swift 3中以编程方式更改它,例如:
collectionView.backgroundColors = [NSColor.black]
答案 2 :(得分:0)
只需更改self.view.wantsLayer = true
self.collectionView.wantsLayer = true
即可