Il layout sembra un po 'non precisata. Quando view2 inizia a ridursi invece di corrispondere alla dimensione di view1? Suppongo che le viste debbano essere della stessa dimensione finché view1 non raggiunge un minimo minimo. A quel punto, la vista 2 viene ridimensionata fino a raggiungere il minimo, quindi la vista 1 viene ridimensionata fino a raggiungere il minimo.
possiamo avere questo comportamento con l'aggiunta di priorità da vincoli. In ordine di importanza abbiamo:
- view1 e view2> = minimo
- view1> = view1SoftMinimum
- view1 == view2
Contraint 1 deve essere sopra la priorità ridimensionamento della finestra. Possiamo renderlo obbligatorio (che è l'impostazione predefinita).
vincolo 2 deve essere superiore contraint 3, ma al di sotto NSLayoutPriorityDragThatCannotResizeWindow. Lo faremo 480.
Contraint 3 deve essere inferiore a contraint 2, quindi lo facciamo 479.
possiamo esprimere tutti quei vincoli in una stringa di formato visivo, che è possibile aggiungere
|[view1(>=view1Minimum,>[email protected],[email protected])][view2(>=view2Minimum)]|
Ecco il codice che ho provato con:
NSView *view1 = [[NSTextView alloc] initWithFrame:NSZeroRect];
NSView *view2 = [[NSTextView alloc] initWithFrame:NSZeroRect];
[view1 setTranslatesAutoresizingMaskIntoConstraints:NO];
[view2 setTranslatesAutoresizingMaskIntoConstraints:NO];
NSView *contentView = [self.window contentView];
[contentView addSubview:view1];
[contentView addSubview:view2];
NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(view1, view2);
[contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[view1]|" options:NSLayoutConstraintOrientationVertical metrics:NULL views:viewsDictionary]];
[contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[view2]|" options:NSLayoutConstraintOrientationVertical metrics:NULL views:viewsDictionary]];
NSDictionary *metrics = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithFloat:300], @"view1SoftMinimum",
[NSNumber numberWithFloat:150], @"view1Minimum",
[NSNumber numberWithFloat:150], @"view2Minimum", nil];
[contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[view1(>=view1Minimum,>[email protected],[email protected])]-[view2(>=view2Minimum)]|" options:0 metrics:metrics views:viewsDictionary]];