2012-06-20 2 views
2

Я работаю с UIBezeirPath, и в моем методе DrawRect, я принял жёстко прописанный цвет, чтобы setStroke для моего пути (линия) в приведенном ниже способекак установить различные цвета для UIBezeirPath путем выбора вариантов цвета

- (void)drawRect:(CGRect)rect 
{ 
[[UIColor redColor] setFill]; 
for (UIBezierPath *_path in pathArray) 
{ 
     [_path strokeWithBlendMode:kCGBlendModeNormal alpha:1.0]; 

    } 
} 

это прекрасно работает и устанавливает красный цвет для пути (линии). Я рисую. Теперь, когда я выбираю другой цвет из цветовых опций, предположим, что я выбираю синий цвет, теперь, когда я начинаю рисовать путь, цвет синий, , но предыдущая рисованная красная линия также меняется на синюю. И вот вся проблема

ниже мой код, как я устанавливаю различные цвета

- (void)drawRect:(CGRect)rect 
{ 
if(changecolor) 
    { 
     AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
     strokeColor = appDelegate.color; 
     NSLog(@"%@",strokeColor); 

     SEL blackSel = NSSelectorFromString(strokeColor); 
     UIColor* tColor = nil; 
     if ([UIColor respondsToSelector: blackSel]) 
      tColor = [UIColor performSelector:blackSel]; 
     [tColor setStroke]; 
     [tColor setFill];  
    } 
    else 
    {  
     [[UIColor redColor] setStroke]; 
     [[UIColor redColor] setFill]; 

     for (UIBezierPath *_path in pathArray) 
     { 
      [_path strokeWithBlendMode:kCGBlendModeNormal alpha:1.0]; 

     } 
    } 
} 

ли я делать это правильно, или я что-то отсутствует. пожалуйста, помогите мне

С уважением Ранджит

+0

Привет, друзья, пожалуйста, помогите мне – Ranjit

+0

Вы должны использовать NSDictionary. Используйте цвет и путь как ключ и объект соответственно и добавьте это в свой массив. Итерируйте этот массив в drawrect, итерации по всем клавишам. Вы получите все ключи и соответствующие им объекты. –

+0

@Prernachavan, спасибо – Ranjit

ответ

5

Просто поддерживать текущий цвет в одном массиве и bezierpaths в другом массиве. Затем сделайте рисунок следующим образом.

int q=0; 

for (UIBezierPath *_path in pathArray) 
{ 
UIColor *_color = [colorArray objectAtIndex:q]; 
[_color setStroke]; 
[_path strokeWithBlendMode:kCGBlendModeNormal alpha:1.0]; 
q++; 
} 
+0

Привет @Veeraraj, спасибо за ответ, вы можете посмотреть на эту ссылку, я застрял с ней http://stackoverflow.com/questions/11502320/eraser-not-working-in-ios-drawing. – Ranjit

Смежные вопросы