uiimageView遮罩层、iOS不规则的ImageView
来源:互联网 发布:115会员充值 淘宝 编辑:程序博客网 时间:2024/06/07 02:19
转自 : http://www.it165.net/pro/html/201411/27187.html
又加以整理
#import "ShapedImageView.h"@interface ShapedImageView(){ CALayer *_contentLayer; CAShapeLayer *_maskLayer;}@end@implementation ShapedImageView- (instancetype)initWithFrame:(CGRect)frame{ self = [super initWithFrame:frame]; if (self) { [self setup]; } return self;}- (void)setup{ _maskLayer = [CAShapeLayer layer]; _maskLayer.path = [UIBezierPath bezierPathWithOvalInRect:self.bounds].CGPath; _maskLayer.fillColor = [UIColor blackColor].CGColor; _maskLayer.strokeColor = [UIColor redColor].CGColor; _maskLayer.frame = self.bounds; _maskLayer.contentsCenter = CGRectMake(0.5, 0.5, 0.1, 0.1); _maskLayer.contentsScale = [UIScreen mainScreen].scale; _contentLayer = [CALayer layer]; _contentLayer.mask = _maskLayer; _contentLayer.frame = self.bounds; [self.layer addSublayer:_contentLayer]; }- (void)setImage:(UIImage *)image{ _contentLayer.contents = (id)image.CGImage;}@end
_maskLayer = [CAShapeLayer layer];_maskLayer.path = [UIBezierPath bezierPathWithRoundedRect:self.bounds cornerRadius:20].CGPath;_maskLayer.fillColor = [UIColor blackColor].CGColor;_maskLayer.strokeColor = [UIColor redColor].CGColor;_maskLayer.frame = self.bounds;_maskLayer.contentsCenter = CGRectMake(0.5, 0.5, 0.1, 0.1);_maskLayer.contentsScale = [UIScreen mainScreen].scale; //非常关键设置自动拉伸的效果且不变形_contentLayer = [CALayer layer];_contentLayer.mask = _maskLayer;_contentLayer.frame = self.bounds;[self.layer addSublayer:_contentLayer];
CGMutablePathRef path = CGPathCreateMutable();CGPoint origin = self.bounds.origin;CGFloat radius = CGRectGetWidth(self.bounds) / 2;CGPathMoveToPoint(path, NULL, origin.x, origin.y + 2 *radius);CGPathMoveToPoint(path, NULL, origin.x, origin.y + radius);CGPathAddArcToPoint(path, NULL, origin.x, origin.y, origin.x + radius, origin.y, radius);CGPathAddArcToPoint(path, NULL, origin.x + 2 * radius, origin.y, origin.x + 2 * radius, origin.y + radius, radius);CGPathAddArcToPoint(path, NULL, origin.x + 2 * radius, origin.y + 2 * radius, origin.x + radius, origin.y + 2 * radius, radius);CGPathAddLineToPoint(path, NULL, origin.x, origin.y + 2 * radius);_maskLayer = [CAShapeLayer layer];_maskLayer.path = path;_maskLayer.fillColor = [UIColor blackColor].CGColor;_maskLayer.strokeColor = [UIColor clearColor].CGColor;_maskLayer.frame = self.bounds;_maskLayer.contentsCenter = CGRectMake(0.5, 0.5, 0.1, 0.1);_maskLayer.contentsScale = [UIScreen mainScreen].scale; //非常关键设置自动拉伸的效果且不变形_contentLayer = [CALayer layer];_contentLayer.mask = _maskLayer;_contentLayer.frame = self.bounds;[self.layer addSublayer:_contentLayer];
_maskLayer = [CAShapeLayerlayer];
_maskLayer.fillColor = [UIColorblackColor].CGColor;
_maskLayer.strokeColor = [UIColorclearColor].CGColor;
_maskLayer.frame = self.bounds;
_maskLayer.contentsCenter =CGRectMake(0.5,0.5,0.1,0.1);
_maskLayer.contentsScale = [UIScreenmainScreen].scale;
//非常关键设置自动拉伸的效果且不变形
_maskLayer.contents = (id)[UIImageimageNamed:@"gray_bubble_right@2x.png"].CGImage;
_contentLayer = [CALayer layer];
_contentLayer.mask = _maskLayer;
_contentLayer.frame = self.bounds;
[self.layer addSublayer:_contentLayer];
gray_bubble_right就是你想要的形状,运行效果如下:UIImageView *imageView = [[UIImageViewalloc]initWithFrame:CGRectMake(0,0,200,300)];
//这里就是我们需要显示的图片
imageView.image =[UIImageimageNamed:@"1.jpg"];
[self.viewaddSubview:imageView];
CAShapeLayer* maskLayer = [CAShapeLayerlayer];
maskLayer.frame = imageView.frame;
maskLayer.contentsScale = [UIScreenmainScreen].scale;
maskLayer.contentsCenter =CGRectMake(0.5,0.5,0.1,0.1);
maskLayer.contents = (id)[UIImageimageNamed:@"communication_chat_right.png"].CGImage;
[imageView.layersetMask:maskLayer];
- uiimageView遮罩层、iOS不规则的ImageView
- uiimageView遮罩层、iOS不规则的ImageView
- iOS 不规则的ImageView
- iOS 不规则的ImageView
- iOS 不规则的ImageView
- iOS 不规则的ImageView
- iOS 不规则的ImageView
- iOS 不规则的UIImageView 实现
- iOS 归档UIImageView后,再解档,imageview的图片出现自动旋转
- iOS开发 ImageView网络请求得到的图片设置UIImageView不变形处理
- ios 不规则的UIView
- iOS--UIImageView的使用方法
- iOS UIImageView 的使用
- 不规则imageview区域点击
- UIImageView------Android中的imageview
- iOS UIImageView的简单使用
- iOS--UIImageView的使用方法详细
- ios中UIImageView的使用
- 齐次线性方程组的解、SVD、最小二乘法
- 关于python中解决中文字符的问题
- 微信自定义菜单中文乱码问题
- mysql数据库隔离级别
- MySQL优化之——自定义存储过程和函数
- uiimageView遮罩层、iOS不规则的ImageView
- 享元模式
- IO的学习
- glib 小case
- 找了一上午,才发现的问题
- .project
- Spring 使用 JdbcTemplate 批量操作
- Mysql主从状态的简单监视
- linux 实现无密码登陆 ---- sftp