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".