iOS-設(shè)置圖片圓角的幾種方法總結(jié)

前言:

現(xiàn)在眾多App中,用戶頭像,BBS帖子詳情,為了美觀好多都是采用的原形圖片來顯示,QQ和微信的用戶頭像也是原形,廢話不多說,下面講一下怎么實現(xiàn)圖片圓角,自己總結(jié)的幾種方法,大家互相學(xué)習(xí)一下.

方法一:(適用于Xib或者Storyboard中):

首先是選中要設(shè)置的圖片(或者其他空間),這種方法當(dāng)然也適用于其他控件,因為它們都是繼承與UIView的,選中要空間之后,下面看圖說話:

Paste_Image.png

設(shè)置如上圖所示,注意上面的Key不要寫錯哦,然后Number對應(yīng)的10是所要設(shè)置的圓角的大小,根據(jù)需求而定

方法二:

這種方法也是針對大眾的控件(button或者label)都可以實現(xiàn)

   view.layer.masksToBounds = YES;
    // 設(shè)置圓角大小
    view.layer.cornerRadius = 6.0 ;
    // 設(shè)置控件邊框的寬度
    view.layer.borderWidth = 1.0;
    // 設(shè)置控件邊框的顏色
    view.layer.borderColor = [[UIColor redColor] CGColor];
方法三:

考慮到工程中會設(shè)置大量的圖片圓角,以上兩種方法雖然可以實現(xiàn)圓角的效果,但是會印象性能,為了以后用起來方便還是自己封裝一套設(shè)置圖片圓角的方法比較實用些,接下來我們就來封裝一下實現(xiàn)圖片圓角功能的代碼:

可以為UIImage添加分類,代碼如下:
#import <UIKit/UIKit.h>
@interface UIImage (PDExtension)
/**
 *  返回原型圖片
 */
- (instancetype)circleImage;

/**
 *  返回原型圖片
 */
+ (instancetype)circleImage:(NSString *)image;
@end

方法的實現(xiàn):

#import "UIImage+PDExtension.h"

@implementation UIImage (PDExtension)
- (instancetype)circleImage
{
    UIGraphicsBeginImageContext(self.size);
    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;
}

+ (instancetype)circleImage:(NSString *)image
{
    return [[self imageNamed:image] circleImage];
}
@end

UIImage的分分類方法的用法:
下面是先設(shè)置圖片圓角,然后設(shè)置按鈕的圖片

[self.iconButton setImage:[image circleImage] forState:UIControlStateNormal];
考慮到很多直接設(shè)置UIImageView圓角,接下來就為UIImageView在添加一個分類
#import <UIKit/UIKit.h>

@interface UIImageView (PDExtension)
// 沒有占位圖片
- (void)setHeaderUrl:(NSString *)url;
// 帶有占位圖片
- (void)setHeaderUrl:(NSString *)url withplaceholderImageName:(NSString *)placeholderImageName;
@end

方法的實現(xiàn)

#import "UIImageView+PDExtension.h"

@implementation UIImageView (PDExtension)
- (void)setHeaderUrl:(NSString *)url
{
    [self setCircleHeaderUrl:url];
}

- (void)setCircleHeaderUrl:(NSString *)url
{
    [self sd_setImageWithURL:[NSURL URLWithString:url] placeholderImage:[UIImage imageNamed:@"img_studio_default"] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
        if (image == nil) return;
        self.image = [image circleImage];
    }];
}
- (void)setHeaderUrl:(NSString *)url withplaceholderImageName:(NSString *)placeholderImageName
{
    [self sd_setImageWithURL:[NSURL URLWithString:url] placeholderImage:[UIImage imageNamed:placeholderImageName] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
        if (image == nil) return;
        self.image = [image circleImage];
    }];

}
@end

UIImageView分類方法的用法:

[self.iconImageView setHeaderUrl:topic.boardheadportrait];
注意點:如果是用的UIImageView是分類方法,這個類的實現(xiàn)是以UIImage為基礎(chǔ)的,里面用到了UIImage的方法,所以用的時候記得把UIImage的分類也要寫上,還有用分類方法的時候記得導(dǎo)入頭文件......
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 在iOS中隨處都可以看到絢麗的動畫效果,實現(xiàn)這些動畫的過程并不復(fù)雜,今天將帶大家一窺ios動畫全貌。在這里你可以看...
    每天刷兩次牙閱讀 8,690評論 6 30
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,221評論 4 61
  • Swift版本點擊這里歡迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh閱讀 26,033評論 7 249
  • 在iOS中隨處都可以看到絢麗的動畫效果,實現(xiàn)這些動畫的過程并不復(fù)雜,今天將帶大家一窺iOS動畫全貌。在這里你可以看...
    F麥子閱讀 5,268評論 5 13
  • svn不是有操作界面么,用命令行裝什么逼?你要知道,你也是逼出來的,畢竟它莫名奇妙的就各種卡死,你百度下“svn ...
    wyude閱讀 717評論 1 1

友情鏈接更多精彩內(nèi)容