iOS切圖片切圓角封裝(swift)

很多朋友都還在2行代碼切圓角吧.......
哈哈 今天放出代碼 直接拖進你的項目就能用了.不用再被人家嘲笑.

直接放出2個分類,
基于SDWebImage封裝

//
//  UIImageView+WebImage.swift
//
//  Created by Jonson on 17/3/13.
//

import UIKit

extension UIImage {
    
    /// 創建頭像圖像
    ///
    /// - parameter size:      尺寸
    /// - parameter backColor: 背景顏色
    ///
    /// - returns: 裁切后的圖像
    func ht_avatarImage(size: CGSize?, backColor: UIColor = UIColor.white, lineColor: UIColor = UIColor.lightGray) -> UIImage? {
        
        var size = size
        if size == nil {
            size = self.size
        }
        let rect = CGRect(origin: CGPoint(), size: size!)
        
        UIGraphicsBeginImageContextWithOptions(rect.size, true, 0)
        
        backColor.setFill()
        UIRectFill(rect)
        
        let path = UIBezierPath(ovalIn: rect)
        path.addClip()
        
        draw(in: rect)
        
        let ovalPath = UIBezierPath(ovalIn: rect)
        ovalPath.lineWidth = 2
        lineColor.setStroke()
        ovalPath.stroke()
        
        let result = UIGraphicsGetImageFromCurrentImageContext()
        
        UIGraphicsEndImageContext()
        
        return result
    }
    
    /// 生成指定大小的不透明圖象
    ///
    /// - parameter size:      尺寸
    /// - parameter backColor: 背景顏色
    ///
    /// - returns: 圖像
    func ht_image(size: CGSize? = nil, backColor: UIColor = UIColor.white) -> UIImage? {
        
        var size = size
        if size == nil {
            size = self.size
        }
        let rect = CGRect(origin: CGPoint(), size: size!)
        
        UIGraphicsBeginImageContextWithOptions(rect.size, true, 0)
        
        backColor.setFill()
        UIRectFill(rect)
        
        draw(in: rect)
        
        let result = UIGraphicsGetImageFromCurrentImageContext()
        
        UIGraphicsEndImageContext()
        
        return result
    }
}

第二個

//
//  UIImageView+WebImage.swift
//
//  Created by Jonson on 17/3/13.
//

import SDWebImage

extension UIImageView {
    
    /// 隔離 SDWebImage 設置圖像函數
    ///
    /// - parameter urlString:        urlString
    /// - parameter placeholderImage: 占位圖像
    /// - parameter isAvatar:         是否頭像
    func ht_setImage(urlString: String?, placeholderImage: UIImage?, isAvatar: Bool = false) {
        
        // 處理 URL
        guard let urlString = urlString,
            let url = URL(string: urlString) else {
            // 設置占位圖像
            image = placeholderImage
            
            return
        }
        
        // 可選項只是用在 Swift,OC 有的時候用 ! 同樣可以傳入 nil
        sd_setImage(with: url, placeholderImage: placeholderImage, options: [], progress: nil) { [weak self] (image, _, _, _) in
            
            // 完成回調 - 判斷是否是頭像
            if isAvatar {
                self?.image = image?.ht_avatarImage(size: self?.bounds.size)
            }
        }
    }
}

最后調用

iconView.ht_setImage(urlString: model.image, placeholderImage: UIImage(named: "default_image"), isAvatar: true)
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容