У меня есть одно окно с одним пользовательским представлением в нем, и я хочу, чтобы пользовательское представление изменяло размер вместе с окном так, чтобы оно полностью заполняло его в любое время. Если я напишу:
NSView *contentView = [self.window contentView];
CustomView *customView = [[CustomView alloc] initWithFrame:[contentView bounds]];
[contentView addSubview:customView];
[contentView addConstraint:
[NSLayoutConstraint constraintWithItem:customView
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationEqual
toItem:contentView
attribute:NSLayoutAttributeWidth
multiplier:1
constant:0]];
[contentView addConstraint:
[NSLayoutConstraint constraintWithItem:customView
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationEqual
toItem:contentView
attribute:NSLayoutAttributeHeight
multiplier:1
constant:0]];
Тогда окно не позволит мне изменить его размер.
Если я добавлю:
[customView setTranslatesAutoresizingMaskIntoConstraints:NO];
Тогда пользовательское представление не появляется (drawRect:
, кажется, никогда не вызывается).
Я пробовал разные способы (включая визуальный формат @"|[customview]|"
), но всегда сталкиваюсь с теми же проблемами. Я знаю, что это можно сделать с помощью старой системы авторазметки, с:
[customView setAutoresizingMask:NSViewWidthSizable|NSViewHeightSizable];
но я хочу использовать систему авторазметки Cocoa, и я хочу использовать ее для более сложных случаев (например, несколько пользовательских представлений, которые всегда заполняют окно).
Кто-нибудь знает, что не так и как я должен использовать систему Auto Layout, чтобы получить результат, который я хочу?