Ограничения автоматической разметки не работают для композиции NSView с drawRect:

Я пытаюсь подать заявкуAutolayout ограничения на пользовательскую кнопку, которая наследует отNSView, Кнопка довольно сложна и может использоваться, например, в качестве переключателя. Пользовательский интерфейс состоит изdrawRect: как вы можете догадаться из следующего фрагмента кода.

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

Я успешно настроил настраиваемое текстовое поле, которое происходит от NSView. Разница в том, что текстовое поле используетaddSubView: составить его компоненты пользовательского интерфейса.

Интересно, можно ли по-прежнему использовать ограничения Autolayout для позиционирования компонентов пользовательского интерфейса. В данный момент ни один компонент не появляется. У меня такое ощущение, что это не работает, потому что я рисую теподвиды».

Ответы на вопрос(1)

Ваш ответ на вопрос