gpt4 book ai didi

xcode - IB_DESIGNABLE 类未在 Interface Builder 上呈现

转载 作者:行者123 更新时间:2023-12-03 17:33:50 26 4
gpt4 key购买 nike

这是我第一次在 Xcode 上尝试使用 IB_DESIGNABLE。

我有这个类来向 NSView 添加颜色。

标题

#import <Cocoa/Cocoa.h>


IB_DESIGNABLE @interface NSViewComCor : NSView

@property (nonatomic, weak) IBInspectable NSColor *backgroundColor;

@end

实现

#import "NSViewComCor.h"

@implementation NSViewComCor

@synthesize backgroundColor = _backgroundColor;

- (void)awakeFromNib {

[super awakeFromNib];

[self setWantsLayer:YES];
self.backgroundColor = [NSColor whiteColor]; //default color
}

- (NSColor *) backgroundColor
{
CGColorRef colorRef = self.layer.backgroundColor;
return [NSColor colorWithCGColor:colorRef];
}

- (void) setBackgroundColor:(NSColor *)backgroundColor
{ // color should change when changed on interface builder inspectable color box
self.layer.backgroundColor = backgroundColor.CGColor;
_backgroundColor = backgroundColor;
}

即使使用 IB_DESIGNABLE,此类也不会在界面生成器上以正确的颜色呈现...为什么?

最佳答案

正如 WWDC 2014 中指出的 "What's New in Interface Builder"视频,您必须:

  1. 创建框架。

  2. 创建类。

  3. 将 View 标记为可设计(并将属性标记为可检查)。

  4. 返回主项目并在 Interface Builder 中指定基类。

例如,我向项目添加了一个新的“框架”目标,并向该框架添加了以下 NSView 子类源:

IB_DESIGNABLE @interface CustomView : NSView

@property (nonatomic, strong) IBInspectable NSColor *backgroundColor;

@end

@implementation CustomView

- (void)drawRect:(NSRect)dirtyRect {
[super drawRect:dirtyRect];

[self.backgroundColor setFill];
NSRectFill(dirtyRect);
}

@end

然后,当我回到我的主项目并尝试将此 CustomView 添加为我的 Storyboard 上的 subview 时,“背景颜色”是 IB“可检查的”,我可以看到颜色立即在 IB 中呈现。

关于xcode - IB_DESIGNABLE 类未在 Interface Builder 上呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27975988/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com