Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode 每次调整大小后,基于Autolayout的cocoa拆分视图都会捕捉回原来的大小_Xcode_Cocoa_Interface Builder_Autolayout - Fatal编程技术网

Xcode 每次调整大小后,基于Autolayout的cocoa拆分视图都会捕捉回原来的大小

Xcode 每次调整大小后,基于Autolayout的cocoa拆分视图都会捕捉回原来的大小,xcode,cocoa,interface-builder,autolayout,Xcode,Cocoa,Interface Builder,Autolayout,为了演示我的问题,我使用interface builder创建了一个简单的测试应用程序,它是默认窗口,附带了默认的viewcontroller(链接到XCode中的viewcontroller.m类),并且viewcontroller(在interface builder中)包含一个垂直拆分视图。然后,此拆分视图的右侧子视图将链接到ViewController.h:ViewController界面中的“IBMOutlet视图*右侧;” 最后,在ViewController.m中,我有以下代码:

为了演示我的问题,我使用interface builder创建了一个简单的测试应用程序,它是默认窗口,附带了默认的viewcontroller(链接到XCode中的viewcontroller.m类),并且viewcontroller(在interface builder中)包含一个垂直拆分视图。然后,此拆分视图的右侧子视图将链接到ViewController.h:ViewController界面中的“IBMOutlet视图*右侧;”

最后,在ViewController.m中,我有以下代码:

+ (void)addConstraint:(NSLayoutAttribute)type relatedBy:(NSLayoutRelation)relation
            superview:(NSView *)superview subview:(NSView *)subview
{
    [superview addConstraint:[NSLayoutConstraint constraintWithItem:subview
                                                          attribute:type
                                                          relatedBy:relation
                                                             toItem:superview
                                                          attribute:type
                                                         multiplier:1
                                                           constant:0]];
}

- (void)viewDidLoad {
    [super viewDidLoad];

    // Do any additional setup after loading the view.
    int numObjects = 3;
    NSMutableArray *array = [[NSMutableArray alloc] init];
    for (int i = 0; i < numObjects; i++) {
        NSTextField *label = [[NSTextField alloc] init];
        [label setEditable:NO];
        label.bezeled = NO;
        label.editable = NO;
        label.drawsBackground = NO;
        [label setTranslatesAutoresizingMaskIntoConstraints:NO];
        [label setAutoresizesSubviews:YES];
        [label setStringValue:[NSString stringWithFormat:@"%d", i]];
        [array addObject:label];
    }

    NSStackView *stackView = [NSStackView stackViewWithViews:array];
    [stackView setTranslatesAutoresizingMaskIntoConstraints:NO];
    [stackView setAutoresizesSubviews:YES];
    stackView.orientation = NSUserInterfaceLayoutOrientationVertical;
    [right addSubview:stackView];
    [[self class] addConstraint:NSLayoutAttributeLeft   relatedBy:NSLayoutRelationEqual superview:right subview:stackView];
    [[self class] addConstraint:NSLayoutAttributeRight  relatedBy:NSLayoutRelationEqual superview:right subview:stackView];
    for (int i = 0; i < [array count]; i++) {
        NSView *view = [array objectAtIndex:i];
        [[self class] addConstraint:NSLayoutAttributeLeft   relatedBy:NSLayoutRelationEqual superview:stackView subview:view];
        [[self class] addConstraint:NSLayoutAttributeRight  relatedBy:NSLayoutRelationEqual superview:stackView subview:view];
    }
}
+(void)addConstraint:(NSLayoutAttribute)类型relatedBy:(NSLayoutRelation)关系
超级视图:(NSView*)超级视图子视图:(NSView*)子视图
{
[superview addConstraint:[NSLayoutConstraint constraintWithItem:子视图
属性:类型
关系人:关系
项目:超级视图
属性:类型
乘数:1
常数:0]];
}
-(无效)viewDidLoad{
[超级视图下载];
//加载视图后执行任何其他设置。
int numObjects=3;
NSMUTABLEARRY*array=[[NSMUTABLEARRY alloc]init];
for(int i=0;i
使用拆分视图的控制柄栏调整大小很有效,万岁!现在,问题是,只要我将“int-numObjects=3;”更改为大于3的任何数字(例如:“int-numObjects=4;”),大小调整行为就会中断。现在,如果我在左右两半之间拖动拆分控制柄,它会在鼠标按钮仍然按下时适当调整大小;但是,如果我松开鼠标按钮,分割视图将恢复到其旧的(预调整大小)配置,右半部分是最小的可能大小


我做错了什么?

我最终通过google fu解决了这个问题:尝试找到正确的关键字,以找到正确的stackoverflow解决方案。post解释了如何解决这个问题,基本上是通过将拆分视图中右窗格的“保持优先级”从250更改为251。

Hi Ronald。如果你自己解决了问题,你可以把自己的答案标记为正确。这将有助于其他路过的用户。