美文网首页
圆形头像示例

圆形头像示例

作者: Mr丶炎 | 来源:发表于2016-06-07 23:19 被阅读295次
    圆形头像.png

    1、用layer
    2、自己画个圆

    方法一是公认的很耗内存的方式,所以不推荐

    /** 这是一种方法, 但是这样做会使APP变卡 */
        // 设置图片为圆
        self.profile_image.layer.cornerRadius = self.profile_image.width * 0.5;
        // 这是让控件里面的内容跟着变化,牛逼!!!
        self.profile_image.layer.masksToBounds = YES;
    

    方法二

    • 我们给UIImageView写个类目,在需要设置圆形头像的地方调用就ok.

    调用

    // 设置圆角头像
        [self.profile_image setHeader:topic.profile_image];
    

    实现分类,有时候服务器返回的头像可能为空,所有要判断,是空就给占位图片

    #import "UIImageView+BSExtension.h"
    #import <UIImageView+WebCache.h>
    
    @implementation UIImageView (BSExtension)
    
    // 设置圆角图像
    - (void)setHeader:(NSString *)url {
        UIImage *placeholder = [[UIImage imageNamed:@"defaultUserIcon"] circleImage];
        [self sd_setImageWithURL:[NSURL URLWithString:url] placeholderImage:placeholder completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
            // 有可能头像为nil, 如果为nil就给占位图片
            self.image =  image ? [image circleImage] : placeholder;
        }];
    }
    
    
    • 给UIImage写分类,自己画圆
    
    #import "UIImage+Extension.h"
    
    @implementation UIImage (Extension)
    
    /**
     *  圆形图片
     */
    - (UIImage *)circleImage {
        
        // self.size当前图片的尺寸 , NO代表透明
        UIGraphicsBeginImageContextWithOptions(self.size, NO, 0.0);
        
        // 获取上下文
        CGContextRef ctx = UIGraphicsGetCurrentContext();
        
        // 添加一个圆
        CGRect rect = CGRectMake(0, 0, self.size.width, self.size.height);
        CGContextAddEllipseInRect(ctx, rect);
        
        // 裁剪
        CGContextClip(ctx);
        
        // 将图片内容画上去
        [self drawInRect:rect];
        
        UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
        
        UIGraphicsEndImageContext();
        
        return image;
    }
    
    @end
    

    相关文章

      网友评论

          本文标题:圆形头像示例

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