As restrições de autolayout não funcionam para a composição do NSView com drawRect:

Estou tentando aplicarAutolayout restrições a um botão personalizado que herda deNSView. O botão é bastante complexo e pode ser usado como botão de opção, por exemplo. A interface do usuário é composta emdrawRect: como você pode adivinhar a partir do trecho de código a seguir.

@interface CustomButton : NSView

...

- (void)drawRect:(NSRect)dirtyRect {
    // ...
    if (self.hasImage) {
        // ...
        if (self.hasTitle) {
            // ...
            [image drawInRect:imgRect
                     fromRect:NSZeroRect
                    operation:NSCompositeSourceOver
                     fraction:fraction
                    alignment:Alignment_LEFT];
        } else {
            [image drawInRect:imgRect
                     fromRect:NSZeroRect
                    operation:NSCompositeSourceOver
                     fraction:fraction
                    alignment:Alignment_CENTER];
        }
    }
    if (self.hasTitle) {
        // ...
        [self.textRenderer drawText:m_title
                         inRect:textRect
                      withState:state
                    controlView:self];
    }
}

Eu configurei com sucesso um campo de texto personalizado que deriva do NSView. A diferença é que o campo de texto usaaddSubView: para compor seus componentes de interface do usuário.

Gostaria de saber se ainda é possível usar restrições de Autolayout para posicionar os componentes da interface do usuário. No momento nenhum componente aparece. Tenho a sensação de que isso não funciona porque eu desenho essas "subvisualizações".

questionAnswers(1)

yourAnswerToTheQuestion