Ograniczenia autoukładu nie działają w przypadku kompozycji NSView z funkcją drawRect:
Próbuję się zgłosićAutolayout ograniczenia do przycisku niestandardowego, który dziedziczy zNSView
. Przycisk jest dość złożony i może być używany na przykład jako przycisk radiowy. Interfejs użytkownika jest złożonydrawRect:
jak można się domyślić z następującego fragmentu kodu.
@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];
}
}
Udało mi się skonfigurować niestandardowe pole tekstowe pochodzące z NSView. Różnica polega na tym, że korzysta z pola tekstowegoaddSubView:
skomponować komponenty interfejsu użytkownika.
Zastanawiam się, czy nadal możliwe jest użycie ograniczeń Autolayout do pozycjonowania komponentów interfejsu użytkownika. W tej chwili nie pojawia się żaden komponent. Mam wrażenie, że to nie działa, ponieważ rysuję te „subviews”.