[英]Adding objects to an NSView
我在项目窗口中有一个NSView,如下图所示:
如何将NSImageViews添加到此“自定义视图”的子视图中,以便在其中显示而不是直接在应用程序的主窗口中显示?
通过编程,您可以访问要向其中添加子视图的视图,然后在其上调用-addSubView:方法。 您可以作为连接到接口构建器的IBOutlet来访问它,也可以通过标识符来访问它(在接口构建器检查器的“标识”部分中设置标识符字符串)。 遍历windowcontroller视图的子视图(您的自定义视图将是一个),并测试“ identifier”的字符串值
这是最近项目的简化代码段,用于以编程方式将额外的“属性”框添加到已在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作为子视图添加到Interface builder中
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.