Как изменить высоту NSSegmentedControl

Я пытаюсь увеличить высоту NSSegmentedControl за пределы размера элемента управления «Обычный» в 25 пикселей. Я создал подкласс NSSegmentedCell, я понимаю, что у меня есть 2 метода для работы.

- (void)drawSegment:(NSInteger)segment
            inFrame:(NSRect)frame
           withView:(NSView *)controlView

- (void)drawWithFrame:(NSRect)frame
               inView:(NSView *)view

Если я помещу сегментированный элемент управления в IB, то переопределю вышеуказанные методы в моем подклассе NSSegmentedCell. Как исключение, кадр и представление, которые передаются, основаны на высоте сегментированного элемента управления в IB. Итак, я не уверен, куда идти отсюда.

Должен ли я также создать подкласс NSSegmentedControl и нарисовать свой собственный элемент управления на нужной мне высоте? а затем использовать подкласс NSSegmentedCell для обработки сегментов?


person Cory    schedule 13.08.2014    source источник
comment
У меня такая же проблема. Как вы это сделали в итоге?   -  person Daniel    schedule 06.06.2016
comment
@ Даниэль, к сожалению, я так и не нашел решения для этого, в итоге я остановился на высоте по умолчанию.   -  person Cory    schedule 06.06.2016
comment
В итоге я сделал свой собственный SegmentedControl, сделанный из NSButtons. Это нуждается в некоторой очистке, а затем я опубликую на Github. По сути, это копия того, что вы видите в Pages или Keynote в верхней части боковой панели при выборе изображения.   -  person Daniel    schedule 07.06.2016
comment
Из любопытства, зачем менять высоту? Я хотел бы увидеть, как может выглядеть идеальный результат   -  person Ky Leggiero    schedule 22.08.2018


Ответы (1)


Значение по умолчанию NSSegmentedControl не позволяет вам регулировать высоту прорисовки. Для этого вам придется создать подкласс (и NSSegmentedCell) и переопределить его функции рисования своими собственными.

person Ky Leggiero    schedule 19.10.2016
comment
Вы, вероятно, также можете сделать некоторую гадость, применяя преобразования масштабирования к основному анимационному слою элемента управления, но я гарантирую, что это не будет выглядеть хорошо. - person Ky Leggiero; 22.08.2018