如何在IB中设置NSView.backgroundColor?

时间:2015-01-22 09:33:09

标签: objective-c xcode cocoa interface-builder

我知道它需要打开图层,我知道它可以通过编程方式完成但是我需要在测试代码中经常这样做,所以有一个简单的地方可以直接在IB中设置它。

我注意到动画检查器有很多与颜色和滤镜有关的选项但是似乎没有与实际颜色本身有关。

1 个答案:

答案 0 :(得分:0)

'我需要经常在测试代码中执行此操作'

如果您为视图的背景着色主要是为了帮助您进行布局的早期阶段,那么一个非层选项 - 它可以避免完全设置backgroundColor - 就是利用< em>运行时属性表。

首先,使用backgroundFill属性创建自己的超简单视图类:

@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中,将相关视图的类更改为新的视图子类,并编辑运行时属性表:

当您运行应用时,视图将使用指定的颜色填充:

enter image description here

这种方法的优点在于使用图层简单地着色背景,您可以在此子类中添加其他有用的东西。 PPView的更高级实现允许您使用运行时属性来指定要在视图中心绘制的字符串,并且可能允许您请求边框:

enter image description here

最后,如果这个 为什么你要改变背景颜色,你应该看看'实时视图'。 Xcode的这个方面允许您在Interface Builder中执行上述所有操作,并且结果也在Interface Builder中实时呈现 - 因此无需不断启动您的应用程序。