我的项目窗口中有一个 NSView ,如下图所示:
如何将 NSImageViews 添加到此“自定义视图”的子视图中,使其显示在那里而不是直接显示在应用程序的主窗口中?
我的项目窗口中有一个 NSView ,如下图所示:
如何将 NSImageViews 添加到此“自定义视图”的子视图中,使其显示在那里而不是直接显示在应用程序的主窗口中?
以编程方式,您将访问要添加子视图的视图,然后在其上调用 -addSubView: 方法。您可以将其作为连接到界面构建器的 IBOutlet 来访问,也可以通过标识符访问它(在界面构建器检查器的“身份”部分中设置标识符字符串)。遍历窗口控制器视图的子视图(您的自定义视图将是一个)并测试“标识符”的字符串值
这是最近一个项目的简化代码片段,用于以编程方式将额外的“属性”框添加到已经在 xib 中定义的框的视图中。我正在将一个新的框视图 ( propertiesBoxView
) 添加到现有的NSView
(由 IBOutlet-ed 引用_detailsView
)中,并将其相对于另一个同级框(其标识符设置为“UI_DETAILSBOX”)定位。NSImageView 的行为方式应该与框视图相同:
_propsViewController = [[MySpecialViewController alloc] initWithThings:...];
/* snip */
NSView *propertiesBoxView = [_propsViewController view];
NSView *detailsBox = nil;
// find the details box
for (NSView *sibling in [_detailsView subviews]) {
if ([[sibling identifier] isEqualToString:@"UI_DETAILSBOX"]) {
detailsBox = sibling;
break;
}
}
if (detailsBox == nil) {
return;
}
[_detailsView addSubview:propertiesBoxView];
NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(propertiesBoxView, detailsBox);
NSArray *verticalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[detailsBox]-9-[propertiesBoxView]-(>=9)-|"
options:0
metrics:nil
views:viewsDictionary];
NSArray *horizontalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-9-[propertiesBoxView]-(>=9)-|"
options:0
metrics:nil
views:viewsDictionary];
[_detailsView addConstraints:verticalConstraints];
[_detailsView addConstraints:horizontalConstraints];
将 NSImageViews 拖放到 NSView 上,这会将 NSImageViews 作为接口生成器中的子视图添加到 NSView