Я создал образец демо для создания случайного пути, используя объект UIBezier
. Я знаю, что задал тот же тип вопроса, который уже был задан, Но я не смог так решить.Как создать путь Безье с разным цветом?
Код
@implementation RandomShape
@synthesize randomPath,size,color;
- (void)drawRect:(CGRect)rect {
self.size = 1.0;
[self.color setStroke];
[self.randomPath stroke];
}
-(id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if(self)
{
self.randomPath = [UIBezierPath bezierPath];
[self.randomPath stroke];
}
return self;
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
[self.randomPath moveToPoint:[touch locationInView:self]];
[self.randomPath setLineWidth:size];
[self setNeedsDisplay];
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *mytouch=[touches anyObject];
[self.randomPath addLineToPoint:[mytouch locationInView:self]];
[self setNeedsDisplay];
}
-(void)clearRandomShape
{
self.randomPath = nil; //Set current path nil
self.randomPath = [UIBezierPath bezierPath]; //Create new path
[self.randomPath setLineWidth:2.0];
[self setNeedsDisplay];
}
1) У меня есть выбрать цвет из точки зрения сборщика.
Теперь моя проблема,
-> Когда я выбираю цвет из палитры это изменить все предыдущие цвета линии, как это.
(Он показывает последний цвет, который я выбираю по всей случайной траектории.)
---> Мое требование я палочка случайного пути отличаются различным цветом в.
Пожалуйста, помогите мне, я смущаюсь.
спасибо.
нарисовать вашу линию в несколько сегментов и цвет каждого сегмента на ваш выбор ? Я также помню, как читал [CAGradientLayer] (https://developer.apple.com/reference/quartzcore/cagradientlayer), который можно использовать для окраски градиентом –
Мое другое требование - я хочу рисовать с разным разным размером. Но когда я меняю размер пути мой старый размер пути остается как есть. Спасибо, что помогите мне пожалуйста. – hd1344
Это именно то, что я имел в виду, каждый раз, когда пользователь рисует - в 'touchhesBegan', вместо того, чтобы добавлять больше строк к существующему, создайте новый путь с новыми свойствами для этого пути. Вместо одного 'UIBezierPath', поддерживайте и' Array'. Кстати, я не предоставляю официальный ответ, потому что я код в swift3, может закончиться синтаксической ошибкой, если я попытаюсь ответить в objC, извинения. –