我在IB中设置的NSView中有一个NSImageView。 NSImageView的大小与NSView完全相同。
在调整窗口大小时,一切正常,NSImageView与NSView的大小相同。
但是,现在我已经添加了一个动画(从A移动到B)到NSImageView,这将搞乱在IB中设置的约束。所以我必须以编程方式执行此操作。
我如何以编程方式设置NSLayoutConstraint以使我的NSImageView与我的NSImageView(超级视图)具有相同的大小?
更新:
只是为了给你们一些更多信息。我的应用程序使用拆分视图(三个视图)而不是在IB中添加NSImageView我现在以编程方式添加它。我将我的新视图(可以扩展到它的父视图)添加到拆分视图中的第三个视图。
您认为拆分视图是否会导致这些问题?
更新2:
好的,我更接近解决这个问题。我从视图中删除了NSImageView,并添加了一个NSView。 NSView缩放得很好,但是一旦我添加了NSImageView,它就会停止工作,因为NSImageView在调整窗口大小后不会缩放。
换句话说,问题在于NSImageView本身。调整窗口大小后,它不会缩放...
解决
我通过使用PDF View而不是图像视图解决了它(这是我想要显示的PDF)。我在PDF视图上将autoScales属性设置为YES。
答案 0 :(得分:4)
我假设您已经引用了以下示例中的视图:
NSView * parentView;
NSImageView * imageView;
[imageView setTranslatesAutoresizingMaskIntoConstraints:NO]; //Required to opt-in to autolayout
[parentView addSubview:imageView]; //Subview must exist before adding constraint.
NSDictionary * views = NSDictionaryOfVariableBindings(imageView);
[parentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[imageView]|"
options:0
metrics:nil
views:views]];
[parentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[imageView]|"
options:0
metrics:nil
views:views]];