oOOMIAO 2013-03-28 08:08 采纳率: 10%
浏览 4561
已采纳

iphone中的圆形相框效果

想用下面的代码实现一个圆形相框:

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

[imageView setImage:newImage];
UIGraphicsEndImageContext();

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

CSDN移动问答

  • 写回答

1条回答 默认 最新

  • vikeyToy 2013-03-29 05:54
    关注

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

    - (IBAction)minus:(id)sender {
        self.radius = @([self.radius floatValue]+10.0f);
        [self redrawImage];
    }
    
    - (IBAction)plus:(id)sender {
        self.radius = @([self.radius floatValue]-10.0f);
        [self redrawImage];
    }
    
    -(void)redrawImage
    {
        //set the original image first
        [_imageView setImage:[UIImage imageNamed:@"your image goes here"]];
    
        CGFloat size = [self.radius floatValue];
        CGContextRef context = CGBitmapContextCreate(NULL, self.view.bounds.size.width, self.view.bounds.size.height, 8, 4 * self.view.bounds.size.width, CGColorSpaceCreateDeviceRGB(), kCGImageAlphaPremultipliedFirst);
        CGContextAddArc(context, 320/2, 460/2, size, 0, 2*M_PI, 0);
        CGContextClosePath(context);
        CGContextClip(context);
        CGContextDrawImage(context, self.view.bounds, _imageView.image.CGImage);
        CGImageRef imageMasked = CGBitmapContextCreateImage(context);
        CGContextRelease(context);
        UIImage *newImage = [UIImage imageWithCGImage:imageMasked];
        CGImageRelease(imageMasked);
    
        [_imageView setImage:newImage];
        UIGraphicsEndImageContext();
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用