Как вы переключаете систему координат NSView?
Я создал NSScrollView в построителе интерфейса, который имеет переменное количество полу-уникальных NSView, которые могут быть программно добавлены и удалены из него. Когда я добавляю subViews в documentView, они отображаются в нижнем левом углу вместо верхнего левого угла. Я вижу, что вы можете проверить isFlipped bool, чтобы выяснить, перерисована ли система координат вида, но я не могу найти способ установить ее как перевернутую.
Кто-нибудь знает, что мне не хватает?
Ответы
Ответ 1
В подклассе NSView переопределите метод isFlipped:
isFlipped Возвращает YES, если приемник использует развернутые координаты чертежа или NO если он использует собственные координаты.
- (BOOL)isFlipped
Обсуждение Реализация по умолчанию возвращает NO; подклассы, которые используют перевернутые координаты должны переопределить этот метод возвращает YES.
Ответ 2
Для всех желающих сделать это в Swift здесь, как вы переопределяете свой собственный класс:
class FlippedView: NSView {
override var flipped:Bool {
get {
return true
}
}
}
Ответ 3
Идея состоит в том, что у каждого отдельного представления есть свой собственный способ рисования (например, с использованием человеко-вычисленных путей), который может стать действительно неуклюжим, если вы внезапно перевернете его координатную плоскость (растры могут быть хорошими, в то время как пути могут рисовать вверх - вниз, вычисления могут помещать вещи вне экрана и т.д.). Поэтому он не может быть установлен, но подклассы могут указывать isFlipped
, потому что они должны определенно знать, как выглядит изображение.
Подклассы также могут устанавливать его, но тогда они должны ожидать, что он изменится в любое время.
Что касается кода, здесь Jay answer в Swift 3:
class FlippedView: NSView {
override var isFlipped: Bool { return true }
}