UIBezierPath Multiple Line Colors

喜你入骨 提交于 2019-11-27 14:50:46

The stroke/fill colors only affect the -stroke command. They don't affect the -appendPath: command. Paths don't contain per-segment color information.

If you need a multi-colored line you're going to need to stroke each color separately.

Set your stroke color (and what have you), then stroke, and then move to the next path:

- (void)drawRect:(CGRect)rect
{
    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]);

        UIBezierPath *path = [row objectAtIndex:0];

        path.lineCapStyle = kCGLineCapRound;
        path.miterLimit = 0;

        //width
        path.lineWidth = [[row objectAtIndex:2] floatValue];

        //color
        [[row objectAtIndex:1] setStroke];

        //path
        [path stroke];
    }

    UIBezierPath *path = [self pathForCurrentLine];
    if (path)
    {
        // set the width, color, etc, too, if you want
        [path stroke];
    }
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!