Las restricciones de reproducción automática no funcionan para la composición de NSView con drawRect:

Estoy tratando de aplicarAutolayout restricciones a un botón personalizado que hereda deNSView. El botón es bastante complejo y se puede utilizar como botón de opción, por ejemplo. La interfaz de usuario está compuesta endrawRect: Como se puede adivinar a partir del siguiente extracto del código.

@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];
    }
}

Configuré exitosamente un campo de texto personalizado que deriva de NSView. La diferencia es que el campo de texto usaaddSubView: para componer sus componentes de interfaz de usuario.

Me pregunto si todavía es posible usar las restricciones de Autolayout para posicionar los componentes de la interfaz de usuario. En el momento no aparece ningún componente. Tengo la sensación de que no funciona porque dibujo esas "subvistas".

Respuestas a la pregunta(1)

Su respuesta a la pregunta