完全封装简单的实现图片的圆形剪切效果
来源:互联网 发布:linux常用基本命令 编辑:程序博客网 时间:2024/06/04 19:27
1.给UIImage添加分类
.h文件
#import <UIKit/UIKit.h>@interface UIImage (WQ)/** * @param name 图片的名称 * @param borderWidth 圆形图片的外轮廓宽度 * @param borderColor 圆形图片的外轮廓颜色 * */+ (instancetype)circleImageWithName:(NSString *)name borderWidth:(CGFloat)borderWidth borderColor:(UIColor *)borderColor;@end
.m文件的实现
#import "UIImage+WQ.h"// 添加相关所需的库文件#import <objc/message.h>@implementation UIImage (WQ)+ (instancetype)circleImageWithName:(NSString *)name borderWidth:(CGFloat)borderWidth borderColor:(UIColor *)borderColor{ // 1.加载原图 UIImage *oldImage = [UIImage imageNamed:name]; // 2.开启上下文 CGFloat imageW = oldImage.size.width + 2 * borderWidth; CGFloat imageH = oldImage.size.height + 2 * borderWidth; CGSize imageSize = CGSizeMake(imageW, imageH); UIGraphicsBeginImageContextWithOptions(imageSize, NO, 0.0); // 3.取得当前的上下文 CGContextRef ctx = UIGraphicsGetCurrentContext(); // 4.画边框(大圆) [borderColor set]; CGFloat bigRadius = imageW * 0.5; // 大圆半径 CGFloat centerX = bigRadius; // 圆心 CGFloat centerY = bigRadius; CGContextAddArc(ctx, centerX, centerY, bigRadius, 0, M_PI * 2, 0); CGContextFillPath(ctx); // 画圆 // 5.小圆 CGFloat smallRadius = bigRadius - borderWidth; CGContextAddArc(ctx, centerX, centerY, smallRadius, 0, M_PI * 2, 0); // 裁剪(后面画的东西才会受裁剪的影响) CGContextClip(ctx); // 6.画图 [oldImage drawInRect:CGRectMake(borderWidth, borderWidth, oldImage.size.width, oldImage.size.height)]; // 7.取图 UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); // 8.结束上下文 UIGraphicsEndImageContext(); return newImage;}@end
2.在控制器中的使用
#import "ViewController.h"#import "UIImage+WQ.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; // 1.直接初始化 UIImageView *shapedImageView = [[UIImageView alloc] initWithFrame:CGRectMake(50, 50, 100, 100)]; // 2.设置imgage可以自定相关配置 shapedImageView.image = [UIImage circleImageWithName:@"test" borderWidth:5 borderColor:[UIColor blueColor]]; [self.view addSubview:shapedImageView];}@end
最终的效果图
0 0
- 完全封装简单的实现图片的圆形剪切效果
- Android实现图片剪切圆形效果
- 自定义圆形图片ImageView的简单实现效果
- 一个简单的圆形图片实现
- ImageView实现图片的剪切
- JavaScript实现图片剪切效果
- openCV实现图片的时钟和中心圆形扩大效果
- [IOS]对UITableView的简单封装,实现了下拉放大头部图片的效果
- 最简单的实现圆形图片的方式
- android圆形头像的选择和剪切并存储出圆形图片
- iOS 剪切圆形图片
- Quartz2D-圆形图片剪切
- 圆形图片剪切 iOS
- <Unity3D UGUI>用UGUI方式实现图片的遮罩,圆角图片,圆形图片效果
- jQuery与Java实现图片的剪切
- jQuery与Java实现图片的剪切
- jQuery与Java实现图片的剪切
- jQuery与Java实现图片的剪切
- 设计模式(十八)---备忘录模式
- vi配置
- 关于notifyDataSetChanged不能动态刷新ListView的问题
- 安装Intel HAXM为Android 模拟器加速
- 黑客应用之:net使用方法(2)
- 完全封装简单的实现图片的圆形剪切效果
- Javascript仿京东放大镜的效果
- eclipse启动时问题
- java框架问题杂想
- Android四大组件之服务(一)-----服务基础功能简述
- ListView设置item的行间距,以及去掉分割线
- android中关于图片分享到QQ或者微信,朋友圈及其他(免SDK)
- MS CS UPS
- Java开发必会的Linux命令