4

我在 IB 中设置的 NSView 中有一个 NSImageView。NSImageView 的大小与 NSView 完全相同。

一切正常,调整窗口大小时 NSImageView 的大小与 NSView 相同。

但是,现在我已经向 NSImageView 添加了一个动画(从 A 移动到 B),这会弄乱在 IB 中设置的约束。所以我必须以编程方式执行此操作。

如何以编程方式设置 NSLayoutConstraint 以使我的 NSImageView 具有与我的 NSImageView (超级视图)相同的大小?

更新:

只是为了给你们一些更多的信息。我的应用程序使用拆分视图(三个视图),而不是在 IB 中添加 NSImageView,我现在以编程方式添加它。我将我的新视图(应可扩展到它的父视图)添加到拆分视图中的第三个视图。

您认为拆分视图会导致这些问题吗?

更新 2:

好的,我更接近解决这个问题。我从视图中删除了 NSImageView,并添加了一个 NSView。NSView 缩放得很好,但是一旦我添加了 NSImageView 它就停止工作,因为调整窗口大小后 NSImageView 不会缩放。

换句话说,问题出在 NSImageView 本身。调整窗口大小后它不会缩放...

解决了

我通过使用 PDF 视图而不是图像视图解决了这个问题(这是我想展示的 PDF)。我在 PDF 视图上将 autoScales 属性设置为 YES。

4

1 回答 1

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]];
于 2013-04-10T21:18:20.290 回答