今天试了一下ios下在图片上加水印的效果,结果发现了一个不知道是不是Xcode的bug的问题,放出来跟大家分享一下。
- (void)drawRect:(CGRect)rect {
// Drawing code
// 需要绘制的文字
NSString *str = @"优米诺";
NSShadow *sh = [[NSShadow alloc]init];
sh.shadowOffset = CGSizeMake(50, 50);
sh.shadowBlurRadius = 1;
sh.shadowColor = [UIColor redColor];
NSDictionary *dict = @{NSFontAttributeName:[UIFont systemFontOfSize:30],NSForegroundColorAttributeName:[UIColor greenColor],NSUnderlineStyleAttributeName:@(3),NSShadowAttributeName:sh};
[str drawInRect:CGRectMake(0, 0, 300, 300) withAttributes:dict];
// [str drawAtPoint:CGPointZero withAttributes:dict];
}
上面这段代码就是在一个view上添加了一个文字水印,效果如下:
红色的字体是添加的水印,上边那个是参照。
问题来了,我把其中设置下划线的代码去掉后,即:
- (void)drawRect:(CGRect)rect {
// Drawing code
// 需要绘制的文字
NSString *str = @"优米诺";
NSShadow *sh = [[NSShadow alloc]init];
sh.shadowOffset = CGSizeMake(50, 50);
sh.shadowBlurRadius = 1;
sh.shadowColor = [UIColor redColor];
NSDictionary *dict = @{NSFontAttributeName:[UIFont systemFontOfSize:30],NSForegroundColorAttributeName:[UIColor greenColor],NSShadowAttributeName:sh};
[str drawInRect:CGRectMake(0, 0, 300, 300) withAttributes:dict];
// [str drawAtPoint:CGPointZero withAttributes:dict];
}
效果如下图所示:
我发现把下划线去掉后shadow就没有了,也就是说没有下划线就没有shadow阴影,这让我很是郁闷。
不过我找到了一个解决办法,那就是把下划线设置为“0”;即:
- (void)drawRect:(CGRect)rect {
// Drawing code
// 需要绘制的文字
NSString *str = @"优米诺";
NSShadow *sh = [[NSShadow alloc]init];
sh.shadowOffset = CGSizeMake(50, 50);
sh.shadowBlurRadius = 1;
sh.shadowColor = [UIColor redColor];
NSDictionary *dict = @{NSFontAttributeName:[UIFont systemFontOfSize:30],NSForegroundColorAttributeName:[UIColor greenColor],NSUnderlineStyleAttributeName:@(0),NSShadowAttributeName:sh};
[str drawInRect:CGRectMake(0, 0, 300, 300) withAttributes:dict];
// [str drawAtPoint:CGPointZero withAttributes:dict];
}
效果如下图所示:
不知道算不算一个小bug,也可能苹果就是这么规定的没有下划线就不能有阴影,但是我没想明白为什么要这么规定,如果有哪位大神知道的话请告知小弟一下,感激不尽!