iOS实现View镂空效果
2016-02-17 22:11
711 查看
需要通过一个mask图显示部分UI或者Icon资源。ios的控件自带alpha的值,但是这个值都是整个icon或者UI的透明效果,不能做到自定义的透明或者镂空效果。我们必须借助于mask资源图。
具体的方法:修改imageview的layer,即可完成这个工作。
CALayer *mask = [CALayer layer]; mask.contents = (id)[[UIImage imageNamed:@"mask.png"] CGImage]; mask.frame = CGRectMake(0, 0, <img_width>, <img_height>); yourImageView.layer.mask = mask; yourImageView.layer.masksToBounds = YES;
//MARK:1. maskView(maskLayer)基本原理CGFloat width = 120.f;//底图self.baseImageView = [[UIImageView alloc]initWithFrame:CGRectMake(20, 20, width, width)];[_baseImageView setImage:[UIImage imageNamed:@"base"]];[self.view addSubview:_baseImageView];//mask 是有透明的self.maskImageView = [[UIImageView alloc]initWithFrame:CGRectMake(20, 20 + width + 20, width, width)];[_maskImageView setImage:[UIImage imageNamed:@"mask"]];[self.view addSubview:_maskImageView];//使用maskView的情况self.addImageView = [[UIImageView alloc]initWithFrame:CGRectMake(20, 20 + (width + 20) * 2, width, width)];[_addImageView setImage:[UIImage imageNamed:@"base"]];UIImageView *mask = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, width, width)];[mask setImage:[UIImage imageNamed:@"mask"]];[_addImageView setMaskView:mask];//iOS8.0之后才有 maskView不能用addSubView的方式来添加遮罩!!!/*iOS 8之前// CALayer *layer = [CALayer layer];// [layer setFrame:CGRectMake(0, 0, width, width)];// [layer setContents:(id)[UIImage imageNamed:@"mask"].CGImage];// [_addImageView.layer setMask:layer];*/[self.view addSubview:_addImageView];[/code]
相关文章推荐
- ios 短音效的使用
- IOS第三天_面向对象1
- ios 拖线没有反应
- 收集Github上的iOS控件和开发资料
- iOS8定位问题解决方案
- IOS测试:XCTest小试牛刀
- ios类别和继承的区别
- iOS 得到圆形头像的方法
- ios-第六天笔记
- IOS-第七天笔记
- iOS: 枚举类型 enum,NS_ENUM,NS_OPTIONS
- iOS开发绘制三角形和添加文字改变文字大小颜色
- iOS指定页面屏幕旋转,手动旋转
- iOS 打包提示 Command/usr/bin/codesign failed with exit code 1 并且钥匙串中证书全部无效的解决方案
- iOS环信3.0集成 (一)SDK的集成
- iOS中的设计模式
- iOS远程推送
- IOS的几种动画及其简单应用
- iOS Size Class学习备忘
- iOS开发中的gcd多线程tips