Ограничения автоматической разметки не работают для композиции 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 для позиционирования компонентов пользовательского интерфейса. В данный момент ни один компонент не появляется. У меня такое ощущение, что это не работает, потому что я рисую теподвиды».