在NSView中Autolayout NSImageView - 规模大小。以编程方式设置NSLayoutConstraint

时间:2013-04-10 20:33:20

标签: cocoa autolayout nslayoutconstraint

我在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。

1 个答案:

答案 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]];