Как сделать так, чтобы пользовательское представление изменяло размер окна с помощью Cocoa Auto Layout?

У меня есть одно окно с одним пользовательским представлением в нем, и я хочу, чтобы пользовательское представление изменяло размер вместе с окном так, чтобы оно полностью заполняло его в любое время. Если я напишу:

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, чтобы получить результат, который я хочу?

71
задан Guillaume 17 November 2011 в 09:07
поделиться