У меня есть одно окно с единственным пользовательским представлением в нем, и я хочу, чтобы пользовательский вид изменялся с помощью окна, чтобы он полностью заполнял его в любое время. Если я пишу:
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, и я хочу использовать ее для более сложных случаев (например, несколько пользовательских представлений, которые всегда заполняют окно).
Кто-нибудь знает, что не так, и как я должен использовать систему автоматического макета, чтобы получить результат, который я хочу?