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