如何设置IB内的NSView.backgroundColor?
How to set the NSView.backgroundColor within IB?
我知道它需要打开图层并且我知道它可以通过编程方式完成但是我需要在测试代码中经常这样做所以最好有一个简单的地方从 IB 中设置它直接。
我注意到动画检查器有很多与颜色和过滤器相关的选项,但 none 似乎与实际颜色本身有关。
'我需要在测试代码中经常这样做'
如果您主要将视图的背景着色作为一种帮助您进行早期布局的方式,一个 non-layers 选项 - 完全避免设置 backgroundColor
- 是使使用 运行时属性 table.
首先,使用 backgroundFill
属性 创建您自己的 super-simple view-class:
@interface PPView ()
@property (nonatomic) NSColor *backgroundFill;
@end
@implementation PPView
- (void)drawRect:(NSRect)dirtyRect {
[super drawRect:dirtyRect];
if (self.backgroundFill) {
[self.backgroundFill setFill];
[[NSBezierPath bezierPathWithRect:self.bounds] fill];
}
}
@end
然后,在 Interface Builder 中,将相关视图的 class 更改为您的新视图子 class,并编辑 Runtime Attributes table:
当您 运行 您的应用时,视图将填充指定颜色:
与使用图层简单地为背景着色相比,这种方法的优势在于您可以向此子项添加其他有用的内容class。 PPView
的更高级实现将允许您使用 运行时属性 指定要在视图中心绘制的字符串,并且可能允许您请求边框:
最后,如果这 是 为什么你想改变背景颜色,你应该研究 'Live Views'。 Xcode 的这一方面让您可以在 Interface Builder 中执行上述所有操作,并且结果也会在 Interface Builder 中实时呈现 - 因此无需不断启动您的应用程序。
我知道它需要打开图层并且我知道它可以通过编程方式完成但是我需要在测试代码中经常这样做所以最好有一个简单的地方从 IB 中设置它直接。
我注意到动画检查器有很多与颜色和过滤器相关的选项,但 none 似乎与实际颜色本身有关。
'我需要在测试代码中经常这样做'
如果您主要将视图的背景着色作为一种帮助您进行早期布局的方式,一个 non-layers 选项 - 完全避免设置 backgroundColor
- 是使使用 运行时属性 table.
首先,使用 backgroundFill
属性 创建您自己的 super-simple view-class:
@interface PPView ()
@property (nonatomic) NSColor *backgroundFill;
@end
@implementation PPView
- (void)drawRect:(NSRect)dirtyRect {
[super drawRect:dirtyRect];
if (self.backgroundFill) {
[self.backgroundFill setFill];
[[NSBezierPath bezierPathWithRect:self.bounds] fill];
}
}
@end
然后,在 Interface Builder 中,将相关视图的 class 更改为您的新视图子 class,并编辑 Runtime Attributes table:
当您 运行 您的应用时,视图将填充指定颜色:
与使用图层简单地为背景着色相比,这种方法的优势在于您可以向此子项添加其他有用的内容class。 PPView
的更高级实现将允许您使用 运行时属性 指定要在视图中心绘制的字符串,并且可能允许您请求边框:
最后,如果这 是 为什么你想改变背景颜色,你应该研究 'Live Views'。 Xcode 的这一方面让您可以在 Interface Builder 中执行上述所有操作,并且结果也会在 Interface Builder 中实时呈现 - 因此无需不断启动您的应用程序。