美文网首页iOS
裁剪图片(圆角(Quartz2D))

裁剪图片(圆角(Quartz2D))

作者: iOS_成才录 | 来源:发表于2015-11-12 19:23 被阅读257次
    裁剪圆角图片.png

    1、思路分析

    • 先绘画一个大圆
    • 然后绘画一个小圆,设置其为裁剪区域
    • 将裁剪的图片draw到小圆中,就能将其按照小圆的范围裁剪掉其他的范围

    2、 代码实现

      #import "DrawView.h"
                    
                    #define kBorderWith 10
                    
                    
                    @implementation DrawView
                    
                    - (void)drawRect:(CGRect)rect {
                        // 获取图形上下文
                        CGContextRef ctx = UIGraphicsGetCurrentContext();
                        
                        /**
                         *  1、绘画大圆
                         */
                        CGRect bigRect = CGRectMake(rect.origin.x + kBorderWith, rect.origin.y+ kBorderWith, rect.size.width - kBorderWith*2, rect.size.height - kBorderWith*2);
                        
                        CGContextSetLineWidth(ctx, kBorderWith);
                        
                        CGContextAddEllipseInRect(ctx, bigRect);
                        
                        [[UIColor whiteColor] set];
                        
                        CGContextStrokePath(ctx);
                       
                        /**
                         *  2、绘画小圆,设置为裁剪区域
                         */
                        CGRect smallRect = CGRectMake(rect.origin.x + kBorderWith, rect.origin.y + kBorderWith, rect.size.width - 2 * kBorderWith, rect.size.height -2 * kBorderWith);
                        CGContextAddEllipseInRect(ctx, smallRect);
                       
                        CGContextClip(ctx);
                        
                        // 裁剪图片
                        UIImage *image = [UIImage imageNamed:@"阿狸头像"];
                        // 设置图片的裁剪区域为小圆
                        [image drawInRect:smallRect];
                        
                        // 将上下文的内容渲染到视图的layer图层上
                        CGContextStrokePath(ctx);
                    }
                    
                    @end
                    
                    
                    #define kBorderWith 10
                    
                    
                    @implementation DrawView
                    
                    - (void)drawRect:(CGRect)rect {
                        // 获取图形上下文
                        CGContextRef ctx = UIGraphicsGetCurrentContext();
                        
                        /**
                         *  1、绘画大圆
                         */
                        CGRect bigRect = CGRectMake(rect.origin.x + kBorderWith, rect.origin.y+ kBorderWith, rect.size.width - kBorderWith*2, rect.size.height - kBorderWith*2);
                        
                        CGContextSetLineWidth(ctx, kBorderWith);
                        
                        CGContextAddEllipseInRect(ctx, bigRect);
                        
                        [[UIColor whiteColor] set];
                        
                        CGContextStrokePath(ctx);
                       
                        /**
                         *  2、绘画小圆,设置为裁剪区域
                         */
                        CGRect smallRect = CGRectMake(rect.origin.x + kBorderWith, rect.origin.y + kBorderWith, rect.size.width - 2 * kBorderWith, rect.size.height -2 * kBorderWith);
                        CGContextAddEllipseInRect(ctx, smallRect);
                       
                        CGContextClip(ctx);
                        
                        // 裁剪图片
                        UIImage *image = [UIImage imageNamed:@"阿狸头像"];
                        // 设置图片的裁剪区域为小圆
                        [image drawInRect:smallRect];
                        
                        // 将上下文的内容渲染到视图的layer图层上
                        CGContextStrokePath(ctx);
                    }
                    
                    @end
    
    • 使用的话,创建一个自定义DrawView对象,添加到控制器的view上显示

    相关文章

      网友评论

        本文标题:裁剪图片(圆角(Quartz2D))

        本文链接:https://www.haomeiwen.com/subject/cqhfhttx.html