iPhone中的圆形相框效果

本文介绍如何使用Core Graphics框架实现iOS应用中图片的圆形单元裁剪效果,并提供了一个具体的实现案例,通过调整半径参数可以改变圆形裁剪区域的大小。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. CGContextRef context = CGBitmapContextCreate(NULL, self.bounds.size.width, self.bounds.size.height, 8, 4 * self.bounds.size.width, CGColorSpaceCreateDeviceRGB(), kCGImageAlphaPremultipliedFirst);  
  2. CGContextAddArc(context, 1024/2, 768/2, size, 0, 6.3, 0);  
  3. CGContextClosePath(context);  
  4. CGContextClip(context);  
  5. CGContextDrawImage(context, self.bounds, imageView.image.CGImage);  
  6. CGImageRef imageMasked = CGBitmapContextCreateImage(context);  
  7. CGContextRelease(context);  
  8. UIImage *newImage = [UIImage imageWithCGImage:imageMasked];  
  9. CGImageRelease(imageMasked);  
  10.   
  11. [imageView setImage:newImage];  
  12. UIGraphicsEndImageContext();  


在设置size--,圆形区域就会缩小,但是设置size++的时候,就没有反应。
不知道怎么呢?

解决方案:

你的代码修改成这样就可以了

[plain]  view plain copy
  1. - (IBAction)minus:(id)sender {  
  2.     self.radius = @([self.radius floatValue]+10.0f);  
  3.     [self redrawImage];  
  4. }  
  5.   
  6. - (IBAction)plus:(id)sender {  
  7.     self.radius = @([self.radius floatValue]-10.0f);  
  8.     [self redrawImage];  
  9. }  
  10.   
  11. -(void)redrawImage  
  12. {  
  13.     //set the original image first  
  14.     [_imageView setImage:[UIImage imageNamed:@"your image goes here"]];  
  15.   
  16.     CGFloat size = [self.radius floatValue];  
  17.     CGContextRef context = CGBitmapContextCreate(NULL, self.view.bounds.size.width, self.view.bounds.size.height, 8, 4 * self.view.bounds.size.width, CGColorSpaceCreateDeviceRGB(), kCGImageAlphaPremultipliedFirst);  
  18.     CGContextAddArc(context, 320/2, 460/2, size, 0, 2*M_PI, 0);  
  19.     CGContextClosePath(context);  
  20.     CGContextClip(context);  
  21.     CGContextDrawImage(context, self.view.bounds, _imageView.image.CGImage);  
  22.     CGImageRef imageMasked = CGBitmapContextCreateImage(context);  
  23.     CGContextRelease(context);  
  24.     UIImage *newImage = [UIImage imageWithCGImage:imageMasked];  
  25.     CGImageRelease(imageMasked);  
  26.   
  27.     [_imageView setImage:newImage];  
  28.     UIGraphicsEndImageContext();  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值