Является ли UIBezierPath лучшим способом сделать подвижный прямоугольник со скругленными углами?

Я делаю UISlider с нуля. Я начал с создания прямоугольника со скругленными углами, используя следующий код:

CGRect frame = CGRectMake(10, 10, self.frame.size.width, 10);

UIBezierPath* path = [UIBezierPath bezierPathWithRoundedRect:frame cornerRadius:10.0];
[[UIColor blueColor] setFill];
[path fill];

Я видел несколько других вариантов создания прямоугольника со скругленными углами, но подумал, что это самый быстрый способ. Существуют ли какие-либо ограничения при создании с использованием UIBezierPath? А именно, ползунок должен иметь возможность перемещаться при касании, поэтому я хочу изменить свойство center BezierPath. Это возможно?


person Mahir    schedule 13.11.2011    source источник


Ответы (1)


Вам нужно будет либо воссоздавать путь Безье каждый раз, когда вам нужно изменить положение ползунка, либо использовать матрицу преобразования CGContext, чтобы нарисовать его в другом месте.

Я предлагаю вам взглянуть на использование CALayer для движущейся части ползунка. Нарисуйте канал ползунка в view.layer и добавьте подслой, в котором вы рисуете «большой палец» ползунка. Затем вы можете просто изменить положение слоя большого пальца, когда вам нужно его переместить.

person rob mayoff    schedule 13.11.2011
comment
Спасибо. Если я вместо этого использую CGRect, мне все равно придется перерисовывать прямоугольник или преобразовывать его каждый раз? - person Mahir; 13.11.2011
comment
извините, я понял, что это было расплывчатое описание. Я имел в виду использование таких методов, как CGContextMoveToPoint и CGContextAddArcToPoint. - person Mahir; 13.11.2011
comment
Извините, я не знаю, как это называется - person Mahir; 13.11.2011
comment
Да, вам придется каждый раз преобразовывать и перерисовывать прямоугольник. - person rob mayoff; 13.11.2011