1. 程式人生 > >Swift之extension的使用

Swift之extension的使用

swift中的extension(即為擴充套件):是向已有的一個類、結構體或者列舉新增新功能(例項方法或者型別方法),包括在沒有獲取原始碼的情況下擴充套件型別的能力。

  • 對UIView擴充套件實現swift中的xib或者storyboard視覺化(設定圓角cornerRadius、設定borderWidth等),這樣在xib或者storyboard中便可直視控制元件的相應的屬性設定效果,不要要Run之後再去看效果:
extension UIView {
    @IBInspectable var borderWidth: CGFloat {
        get {
            return self.layer
.borderWidth } set { self.layer.borderWidth = newValue } } @IBInspectable var borderColor: UIColor { get { return UIColor(cgColor:self.layer.borderColor!) } set { self.layer.borderColor = newValue.cgColor } } var cornerRadius: CGFloat { get { return self.layer
.cornerRadius } set { self.layer.cornerRadius = newValue self.layer.masksToBounds = true } } }
  • 對UIImage的擴充套件(直接可以用點語法呼叫擴充套件的屬性和方法即可)
extension UIImage {
    var height : CGFloat{return self.size.height}
    var width  : CGFloat{return self.size
.width} // 壓縮圖片 func imageCompress(targetWidth:CGFloat) -> UIImage { let targetHeight = (targetWidth/width)*height UIGraphicsBeginImageContext(CGSize(width: targetWidth, height: targetHeight)) self.draw(in: CGRect(x: 0, y: 0, width: targetWidth, height: targetHeight)) let newImage : UIImage = UIGraphicsGetImageFromCurrentImageContext()! UIGraphicsEndImageContext() return newImage } //模糊圖片 func blurImage(blurValue:NSNumber) -> UIImage { let context = CIContext(options: [kCIContextUseSoftwareRenderer: true]) let ciImage = CoreImage.CIImage(image: self) let blurFilter = CIFilter(name: "CJGaussianBlur") blurFilter?.setValue(ciImage, forKey: kCIInputImageKey) blurFilter?.setValue(blurValue, forKey: "inputRadius") let imageRef = context.createCGImage((blurFilter?.outputImage)!, from: (ciImage?.extent)!) let newImage = UIImage(cgImage: imageRef!) return newImage } }

相關推薦

Swiftextension的使用

swift中的extension(即為擴充套件):是向已有的一個類、結構體或者列舉新增新功能(例項方法或者型別方法),包括在沒有獲取原始碼的情況下擴充套件型別的能力。 對UIView擴充套件實現sw

Swift vm10虛擬機安裝Mac OS X10.10教程

darwin 以及 wwdc ont 虛擬機安裝 繼續 log 我的電腦 終極 VM10裝Mac OS X 10.9.3及更新到Mac OS X 10.10,讓你的windows也能玩Swift 。 近期WWDC放出終極大招——新的編程語言Swift(雨燕),導

swift as、as!、as?

ani pre 向下轉型 run 值類型 模式匹配 性問題 不同 派生類 1,as使用場合(1)從派生類轉換為基類,向上轉型(upcasts) 1 class Animal {} 2 class Cat: Animal {} 3 let cat = Cat() 4 le

Swift關鍵字使用(I)

過去 col ext 四大 包括 class 作用域 錯誤 文件 static和class的使用 static 使用 在非class的類型(包括enum和struct)中,一般使用static來描述類型作用域。在這個類型中,我們可以在類型範圍中聲明並使用存儲屬性,計算屬性和

swift 空合運算子(Nil Coalescing Operator)

空合運算子(a ?? b)將對可選型別a進行空判斷,如果a包含一個值就進行解封,否則就返回一個預設值b.這個運算子有兩個條件: 1.表示式a必須是Optional型別 2.預設值b的型別必須要和a儲存值的型別保持一致 空合併運算子是對以下程式碼的簡短表達方法: a != nil ?

窺探Swift新添資料型別元組與可選值

今天的部落格中就總結一下關於Swift中相對Objc新新增的兩個資料型別:元組(Tuple)和可選值型別(Optional)。上面這兩個型別是Swift獨有的型別,使用起來也是非常方便的,今天就通過一些示例來介紹一下如何初始化和使用元組和可選值型別以及使用元組和可選值型別的場景

國際金融互聯報文規範SWIFT銀行識別程式碼BIC Code介紹

之前通過幾篇文章介紹了現代化支付系統行號CNAPS Code、以及金融機構編碼的組成,如下所示:但前面這些編號主要用於國內銀行間的支付結算報文傳遞。而在國際業務,涉及境外外資銀行之間的報文傳遞,人民銀行

swift第一個IOS程式(瀏覽web頁面)

1、工程的建立 a、選擇第二個(Greate a new Xcode project) b、左邊選擇IOS中的Application,右邊Singl View Application,最後next c、在Product Name輸入程式名,比如fistIOS

Swift旅:2.完成計算器,初探MVC設計模式

斯坦福大學公開課:iOS8 github上字幕連結:字幕 百度網盤資源下載連結:百度網盤 1.計算器完成 ①回車鍵及相關的程式碼 //定義一個數組,用來當做棧儲存資料使用 var openStack = Array<Double>

Swift protocol extension method dispatch

Swift protocol extension method dispatchProtocol extension is one of the coolest features introduced in swift 2.0. They enable new ways to share implementa

Swift1

1. 宣告: 本部落格僅僅用於學習,水平不足的地方歡迎各位指導。 2. 環境:  MAC : 10.10.1 Xcode:6.1.1 3. 建立新專案 開啟Xcode,出現如下畫面 在上圖中選擇Create a new Xcode project,進入下面的

Swift自定義UIView

Swift自定義View和OC自定義View的原理都是一樣的,重寫init()方法或initWithFrame()方法,下面簡單說說如何自定義swift UIView 主要是重寫init(frame:CGRect)方法,其中required init?(coder aDec

swift動畫的使用

2.UIView的動畫;let v1:UIView=UIView.init()let v2:UIView=UIView.init()UIView.transition(from: v1, to: v2, duration: 3, options: UIViewAnimatio

Swift高階運算子與列舉

//: Playground - noun: a place where people can play import UIKit var str = "Hello, playground" //位運算子 //UInt8,將十進位制數以二進位制的方式賦值,UI

Swift網路程式設計-請求快取

在網路程式設計的過程中,快取操作的應用十分廣泛 在使用快取技術過程中,需要的注意點: 1、經常更新的資料,不能使用快取技術 2、不經常更新的資料,果斷使用快取技術 3、如果存在大量請求,並且使用快取技

Swift自定義突出按鈕Tabbar

個人原創請勿轉載!謝謝 也不算是自定義一個Tabbar,而是在UITabbar的基礎上使用Runtime來進行動態新增屬性 效果如圖: 執行時機制 Runtime是一套比較底層

Swift自動閉包(@autoclosure、@noescape、@escape、??)

@autoclosure(自動閉包) 1:自動閉包,顧名思義是一種自動建立的閉包,用於包裝函式引數的表示式,可以說是一種簡便語法. 2:自動閉包不接受任何引數,被呼叫時會返回被包裝在其中的表示式的值。 

swiftFileManager的操作

      1)首先我們獲取使用者文件目錄路徑        let manager = FileManager.default        let urlForDocument = manager.urls(for: .documentDirectory, in:.use

swift擴充套件extension——swift學習(七)

首先看到swift擴充套件的時候,我就想起了OC的擴充套件和類別;於是我就在找swift的擴充套件和OC的擴充套件和類別是什麼關係。經過幾番查閱資料,發現swift的擴充套件和OC的類別是如出一轍。但是我又很一根筋地去查詢swift類似OC擴充套件的東西是什麼。

swift網路下載圖片sdwebImage、Kingfisher

參考:https://www.jianshu.com/p/55bbfbdf78de =============方法一:使用sdwebImage 下載地址:https://github.com/rs/SDWebImage 在橋接檔案中匯入 #import <S