扫码关注官方订阅号
认证高级PHP讲师
Christian Brunschen 在你当前的代码里,保存当前内容的GState,配置它来绘制一个阴影。然后恢复到你配置阴影之前的状态。接下来,调用drawRect:的超类实现。 绘制阴影应受阴影设置影响,需要如下之后发生:
CGContextSetShadow(currentContext, CGSizeMake(-15, 20), 5);
但是在如下之前:
CGContextRestoreGState(currentContext);
所以如果你想让超类的drawRect: 被包裹在一个阴影里,那么把你的代码写成这样怎么样?
- (void)drawRect:(CGRect)rect { CGContextRef currentContext = UIGraphicsGetCurrentContext(); CGContextSaveGState(currentContext); CGContextSetShadow(currentContext, CGSizeMake(-15, 20), 5); [super drawRect: rect]; CGContextRestoreGState(currentContext); }
ollie 迄今为止比较简单的一个方法是设置初始化视图的层属性。
self.layer.masksToBounds = NO; self.layer.cornerRadius = 8; // if you like rounded corners self.layer.shadowOffset = CGSizeMake(-15, 20); self.layer.shadowRadius = 5; self.layer.shadowOpacity = 0.5;
Z.Y.
这将会减慢应用程序。只要你的视图是中规中矩的矩形,加上下面这几行代码可以提高性能。
self.layer.shadowPath = [UIBezierPath bezierPathWithRect:self.bounds].CGPath;
Srikar Appal 我把这个作为utils的一部分。有了这个我们不仅可以轻松地设置阴影,还可以为任何UIView获得圆角。还可以设置阴影颜色。通常选用黑色,但是当背景不是白色的时候,或许你会想用一些别的颜色。这是我的方法。
in utils.m + (void)roundedLayer:(CALayer *)viewLayer radius:(float)r shadow:(BOOL)s { [viewLayer setMasksToBounds:YES]; [viewLayer setCornerRadius:r]; [viewLayer setBorderColor:[RGB(180, 180, 180) CGColor]]; [viewLayer setBorderWidth:1.0f]; if(s) { [viewLayer setShadowColor:[RGB(0, 0, 0) CGColor]]; [viewLayer setShadowOffset:CGSizeMake(0, 0)]; [viewLayer setShadowOpacity:1]; [viewLayer setShadowRadius:2.0]; } return; }
为了使用这个得调用[utils roundedLayer:yourview.layer radius:5.0f shadow:YES];
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
扫描下载App
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
Christian Brunschen
在你当前的代码里,保存当前内容的GState,配置它来绘制一个阴影。然后恢复到你配置阴影之前的状态。接下来,调用drawRect:的超类实现。
绘制阴影应受阴影设置影响,需要如下之后发生:
但是在如下之前:
所以如果你想让超类的drawRect: 被包裹在一个阴影里,那么把你的代码写成这样怎么样?
ollie
迄今为止比较简单的一个方法是设置初始化视图的层属性。
Z.Y.
这将会减慢应用程序。只要你的视图是中规中矩的矩形,加上下面这几行代码可以提高性能。
Srikar Appal
我把这个作为utils的一部分。有了这个我们不仅可以轻松地设置阴影,还可以为任何UIView获得圆角。还可以设置阴影颜色。通常选用黑色,但是当背景不是白色的时候,或许你会想用一些别的颜色。这是我的方法。
为了使用这个得调用[utils roundedLayer:yourview.layer radius:5.0f shadow:YES];