Двунаправленный NSLevelIndicator (начало координат в центре индикатора) - как?
Мне нужно графическое указание "неправильности" чего-либо со знаком, то есть 0 идеально, -1, 0 совершенно неверно в одном направлении, 0,3 частично верно, но отклонено вправо, 1, 0 совершенно неверно в другом направлении. Вроде как вольтметр.
Я искал и искал, и самым близким, что я нашел, была эта тема: двунаправленный индикатор уровня, но, похоже, он внезапно закончился, и предложенное решение, похоже, не соответствует требованиям автора (или моих).
Я не умею рисовать, но я попытался сделать несколько грубых макетов в IB, чтобы проиллюстрировать, что я имею в виду. Внешние области будут окрашены по-разному, и, вероятно, в окончательной реализации будет информация об оси и другие данные. (Очевидно, я не могу публиковать изображения. Вместо этого я попробую ascii art)
Пятно на:
[....|....]
Совершенно неправильно слева
[|||||....]
Совершенно неправильно вправо:
[....|||||]
Частично неправильно:
[....|||..]
Теперь, я полагаю, у меня есть несколько вариантов:
Подкласс NSLevelIndicator (или NSLevelIndicatorCell) Я не против этого, но я не совсем уверен, как это сделать. В результате поиска в Интернете я нашел ответы на такие вопросы, как изменение стиля (закругленные углы, fx) и обратное изменение критической окраски, но такие решения, похоже, подразумевают полное переопределение функций рисования, что означает, что вы теряете любой объект NSLevelIndicator(Cell) делает для вас градиенты и все такое. Я надеялся, что можно было манипулировать различными переменными и держаться подальше от реального рисунка.
Создайте пользовательское представление. Я никак не графически настроен, но я полагаю, что началом будет руководство по пользовательскому представлению Apple: создание подклассов NSView. Я бы хотел как можно больше использовать стандартные компоненты пользовательского интерфейса, так как уверен, что у Apple лучшие дизайнеры пользовательского интерфейса, чем у меня. Ранее я делал пользовательский 2D-график, который, на мой взгляд, в порядке, но, на мой взгляд, это действительно больше пользовательский вид.
Занимать чужую реализацию (или искать вдохновение) Я искал, но ничего не нашел, что странно, так как я предполагаю, что это будет обычная установка. Он не должен напоминать NSLevelIndicator как таковой. Это может быть вольтметр или подобное.
Так какой подход я выберу? Если 1 или 3, мне нужно руководство. Если 2, я хотел бы знать, достаточно ли документации Apple для такого новичка, как я, или мне нужна дополнительная информация.
PS: Задавать несколько вопросов в одном и том же посте, вероятно, не мудро, но считайте это бонусным вопросом. Когда вы наследуете NS* вещи, как вы знаете, какие методы переопределить? Насколько я могу судить, в справочнике классов Apple перечислены только публичные методы. Что я делаю, это создаю подкласс и затем набираю "я". и посмотреть, что появляется, но это не очень легко разобрать.
1 ответ
Странно, может быть, это недавнее обновление Apple. Но теперь NSLevelIndicator поддерживает отрицательные значения как минимум. Так что нужно просто установить минимальное значение -n и максимальное значение n. 0 будет в середине.