gpt4 book ai didi

objective-c - Cocoa 自动布局和调整 subview 的大小

转载 作者:太空狗 更新时间:2023-10-30 03:48:34 25 4
gpt4 key购买 nike

我在使用自动布局正确调整 subview 大小时遇到​​了问题。为了说明我的观点,我举了一个简单的例子。

首先,我创建了一个新的 NSViewController 并向其添加了一个 subview (在本例中为 NSTextView)并添加了自动布局约束。

enter image description here

然后,我向我的 MainMenu.xib 添加了一个自定义 View ,并为此设置了自动布局约束。

enter image description here

最后,我创建了一个 View Controller 实例,并将其 View 放入我的自定义 View 中。

#import "AppDelegate.h"
#import "MyViewController.h"

@interface AppDelegate()
@property (weak) IBOutlet NSView *customView;
@end

@implementation AppDelegate

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
MyViewController *myViewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];

[self.customView addSubview:myViewController.view];
myViewController.view.frame = self.customView.bounds;
}

@end

因为在两个 xib 文件中都选中了“Autoresizes Subviews”,所以我希望 NSTextView 在我调整主窗口大小时调整大小。然而,它只是停留在原地。

enter image description here

我在这里错过了什么?这让我困惑了几天。

谢谢,迈克尔·努森

最佳答案

以防其他人遇到同样的问题。我最终以这种方式解决了它(感谢@SevenBits 向我指出了那个方向)。

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
MyViewController *myViewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];

[self.customView addSubview:myViewController.view];

myViewController.view.translatesAutoresizingMaskIntoConstraints = NO;

NSArray *verticalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[subView]|"
options:0
metrics:nil
views:@{@"subView" : myViewController.view}];

NSArray *horizontalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|[subView]|"
options:0
metrics:nil
views:@{@"subView" : myViewController.view}];

[self.customView addConstraints:verticalConstraints];
[self.customView addConstraints:horizontalConstraints];
}

关于objective-c - Cocoa 自动布局和调整 subview 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22042363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com