Nỗ lực của tôi để vẽ các đường UIBezierPath với các màu khác nhau không làm tôi thất vọng. Tất cả các dòng thay đổi màu hiện đang được chọn. Tất cả đường dẫn và thông tin của tôi đều được lưu trữ trong một NSMutableArray có tên là pathInfo. Trong thông tin đường dẫn, tôi thả mảng chứa Đường dẫn, Màu, Chiều rộng và Loại dòng. Điều này làm việc tốt ngoại trừ tất cả các dòng chuyển sang bất kỳ màu nào người dùng đã chọn. Tôi sẽ đánh giá cao sự giúp đỡ rất nhiều!UIBezierPath Nhiều Màu Đường kẻ
- (void)drawRect:(CGRect)rect {
UIBezierPath *drawPath = [UIBezierPath bezierPath];
drawPath.lineCapStyle = kCGLineCapRound;
drawPath.miterLimit = 0;
for (int i = 0; i < [pathInfo count]; i++){
NSArray *row = [[NSArray alloc] initWithArray:[pathInfo objectAtIndex:i]];
NSLog(@"Path: %@",[row objectAtIndex:0]);
NSLog(@"Color: %@",[row objectAtIndex:1]);
NSLog(@"Width: %@",[row objectAtIndex:2]);
NSLog(@"Type: %@",[row objectAtIndex:3]);
//width
drawPath.lineWidth = [[row objectAtIndex:2] floatValue];
//color
[[row objectAtIndex:1] setStroke];
//path
[drawPath appendPath:[row objectAtIndex:0]];
}
UIBezierPath *path = [self pathForCurrentLine];
if (path)
[drawPath appendPath:path];
[drawPath stroke];
}
- (UIBezierPath*)pathForCurrentLine {
if (CGPointEqualToPoint(startPoint, CGPointZero) && CGPointEqualToPoint(endPoint, CGPointZero)){
return nil;
}
UIBezierPath *path = [UIBezierPath bezierPath];
[path moveToPoint:startPoint];
[path addLineToPoint:endPoint];
return path;
}
Hãy vượt qua tôi mã hoàn chỉnh của bạn cho việc này nếu có thể. Trên thực tế tôi cũng phải đối mặt với cùng một vấn đề. Nhưng tôi đang sử dụng touchesBegan, touchesMoved và touchesEnd phương pháp. Tôi không thể làm được. – Abha