ahw*_*ulf 9 macos cocoa constraints nsview
我在一个具有单个NSView的新应用程序中创建了默认的NSWindow.然后我创建一个新的NSViewController,它有自己的XIB和视图.在app委托中,我做了显而易见的事
self.mainViewController = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil];
[self.window.contentView addSubview:self.mainViewController.view];
self.mainViewController.view.frame = ((NSView*)self.window.contentView).bounds;
Run Code Online (Sandbox Code Playgroud)
好的,我如何以新的方式设置约束,让我的子视图保持其大小与Window相同,即它是超级视图.它似乎不会自动运行.两个视图的Autoresizessubviews都为ON.
基本上,你需要约束四件事:
如果视觉约束不适合您,您可以在代码中单独构建这四个约束.使用该方法+constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:
constant:
指定不同视图属性之间的确切关系.例如,上面的约束#1可以表示为:
[NSLayoutConstraint constraintWithItem:mySubview
attribute:NSLayoutAttributeLeading
relatedBy:NSLayoutRelationEqual
toItem:mySuperview
attribute:NSLayoutAttributeLeading
multiplier:1.0f
constant:0.0f]
Run Code Online (Sandbox Code Playgroud)
和#3可能是:
[NSLayoutConstraint constraintWithItem:mySubview
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationEqual
toItem:mySuperview
attribute:NSLayoutAttributeWidth
multiplier:1.0f
constant:0.0f]
Run Code Online (Sandbox Code Playgroud)
一旦构建了这四个约束,就可以根据需要将它们添加到superview中.
请注意,有多种方法可以实现与上述相同的效果:
您也可以在视觉表示中提出相同的约束,如Peter Hosey的回答.例如,等宽度约束可能@"[mySubview(==mySuperview)]"
与适当的视图字典一样.
请记住," 自动布局指南"提供了大量有关约束的信息,包括在出现问题时如何对其进行调试.
归档时间: |
|
查看次数: |
4782 次 |
最近记录: |