下面是我想用核心图形绘制的标志。
我的工作是:
Flag.m
- (void)drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 1.0);
CGContextMoveToPoint (context, 20, 10);
CGContextAddLineToPoint (context, 50, 10);
CGContextAddLineToPoint (context, 50, 90);
CGContextAddLineToPoint (context, 45, 90);
CGContextAddLineToPoint (context, 45, 95);
CGContextAddLineToPoint (context, 40, 92);
CGContextAddLineToPoint (context, 35, 90);
CGContextAddLineToPoint (context, 30, 92);
CGContextAddLineToPoint (context, 25, 95);
CGContextAddLineToPoint (context, 25, 90);
CGContextAddLineToPoint (context, 20, 90);
CGContextAddLineToPoint (context, 20, 10);
CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor);
CGContextFillPath(context);
}
我最终得到的是
我的问题:
如何添加阴影以使我的旗帜在其尾部折叠并卷曲(如上面的红旗)
答案 0 :(得分:1)
这是一个相对简化的版本。我评论了一些要点,分为两部分。首先绘制尾部。然后,上面画出主色带。可以使用[UIColor colorWithWhite:0.0 alpha:0.4]
如果你想获得更多点,你可以将主区域的底部几个点绘制为另一个带渐变的矩形。确保在绘制最后一个矩形之前关闭阴影。
/*CGContextMoveToPoint (context, 20, 10);
CGContextAddLineToPoint (context, 50, 10);*/
CGContextMoveToPoint (context, 48, 85);
CGContextAddLineToPoint (context, 48, 90);
CGContextAddLineToPoint (context, 45, 90);
CGContextAddLineToPoint (context, 45, 95);
CGContextAddLineToPoint (context, 40, 92);
CGContextAddLineToPoint (context, 35, 90);
CGContextAddLineToPoint (context, 30, 92);
CGContextAddLineToPoint (context, 25, 95);
CGContextAddLineToPoint (context, 25, 90);
CGContextAddLineToPoint (context, 22, 90);
CGContextAddLineToPoint (context, 22, 85);
//CGContextAddLineToPoint (context, 20, 10);
CGContextSetShadowWithColor(context, CGSizeMake(0, 5.), 3., [UIColor colorWithWhite:0 alpha:.4].CGColor);
CGContextSetFillColorWithColor(context, [UIColor colorWithWhite:.95 alpha:1].CGColor);
CGContextFillPath(context);
CGContextSetShadowWithColor(context, CGSizeMake(0, 2.), 1.5, [UIColor colorWithWhite:0 alpha:.3].CGColor);
CGContextMoveToPoint (context, 20, 88);
CGContextAddLineToPoint (context, 20, 10);
CGContextAddLineToPoint (context, 50, 10);
CGContextAddLineToPoint (context, 50, 88);
CGContextFillPath(context);