iphone/ipad开发-用CALayer.Mask(遮罩)实现iphone图标的水晶立体效果(转)
2011-12-28 16:58
411 查看
http://blog.sina.com.cn/s/blog_7b758d4d0100ydv7.html
而原图效果只是这样:
通过遮罩完成以上效果,代码非常简单,不过需要准备遮罩层要用的alpha通道图片,对于非常非常不美工的我来说,用d版的fireworks搞掂:
但是你并不能直接把这个遮罩蒙在你的图片上,这样的话,图片会变暗,而且效果是跟你期望的相反的,正确的做法是在图片上蒙一个某种色的层,然后给这个层应用这个遮罩,这样最终效果就是我们期望的。
不过这里我们还需要一个简单的遮罩,应用在整个图上,把它修正成圆角(因为原图是四方的):
这个遮罩很简单,圆角alpha通道全透明,把原图的四角给全透掉(遮罩原理就是在原图像素的alpha改成遮罩的alpha)。
好了,整个代码如下:
而原图效果只是这样:
通过遮罩完成以上效果,代码非常简单,不过需要准备遮罩层要用的alpha通道图片,对于非常非常不美工的我来说,用d版的fireworks搞掂:
但是你并不能直接把这个遮罩蒙在你的图片上,这样的话,图片会变暗,而且效果是跟你期望的相反的,正确的做法是在图片上蒙一个某种色的层,然后给这个层应用这个遮罩,这样最终效果就是我们期望的。
不过这里我们还需要一个简单的遮罩,应用在整个图上,把它修正成圆角(因为原图是四方的):
这个遮罩很简单,圆角alpha通道全透明,把原图的四角给全透掉(遮罩原理就是在原图像素的alpha改成遮罩的alpha)。
好了,整个代码如下:
- (void)viewDidLoad { [super viewDidLoad]; UIGraphicsBeginImageContext(icon.bounds.size); CGContextRef ctx = UIGraphicsGetCurrentContext(); const CGFloat components[4] = {0.0,0.4,0.0,1.0}; CGContextSetFillColor(ctx, components); CGContextFillRect(ctx, CGRectMake(0, 0, icon.bounds.size.width, icon.bounds.size.height)); UIImage *background = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); UIImage *image = [UIImage imageNamed:@"icon.png"]; UIImage *mask = [UIImage imageNamed:@"IconBase.png"]; UIImage *roundCorner = [UIImage imageNamed:@"round-corner.png"]; icon.image = image; CALayer* subLayer = [[CALayer layer] retain]; subLayer.frame = icon.bounds; subLayer.contents = (id)[background CGImage]; CALayer* maskLayer = [[CALayer layer] retain]; maskLayer.frame = icon.bounds; maskLayer.contents = (id)[mask CGImage]; [subLayer setMask:maskLayer]; [[icon layer] addSublayer:subLayer]; CALayer* roundCornerLayer = [[CALayer layer] retain]; roundCornerLayer.frame = icon.bounds; roundCornerLayer.contents = (id)[roundCorner CGImage]; [[icon layer] setMask:roundCornerLayer]; [maskLayer release]; [subLayer release]; [roundCornerLayer release]; }
相关文章推荐
- 用CALayer.Mask(遮罩)实现iphone图标的水晶立体效果
- 用CALayer.Mask(遮罩)实现iphone图标的水晶立体效果
- 用CALayer.Mask(遮罩)实现iphone图标的水晶立体效果
- iphone/ipad开发-用CALayer.Mask(遮罩)实现ip
- 将一个view 的背景设为透明 但view上的图标 不透明 实现类似iphone ipad 主页的滑动效果
- iPhone开发3种导航界面效果+iPad全景浏览demo
- 【投稿】使用CALayer的Mask实现注水动画效果
- .net"立体柱状图、滑动块等效果实现" 知易营养健康系统——开发总结
- 浅谈iPhone和iPad开发中的图标设置
- IOS开发之Iphone和Ipad应用程序图标和启动动画
- .net"立体柱状图、滑动块等效果实现" 知易营养健康系统——开发总结
- (iPhone/iPad开发)实现应用程序icon及UITabBar右上角带红圈中数字
- Iphone开发中的动画效果实现分类代码
- IOS开发UI篇--使用CAShapeLayer实现复杂的View的遮罩效果
- iphone app 的图标上被自动添加一层半透明遮罩(玻璃效果),小米3这样的高分屏icon不生效,怎么破?
- 谈iPhone和iPad开发中的图标设置
- 关于iPhone和iPad的图标的思考(来自cocoachina 苹果开发中文网站)
- 使用CALayer的Mask实现注水动画效果
- IOS开发之Iphone和Ipad应用程序图标和启动动画
- iphone开发第二课:火焰效果是如何实现的