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

questionAnswers(1)

yourAnswerToTheQuestion