如何在Swift中優雅地使用UIImage
作者:Natasha, 原文鏈接 ,原文日期:2015/08/30
昨天,我抽空看了 Swift in Practice WWDC15 Session 的視頻,很喜歡其中對Image命名的處理建議。
這個視頻里解決的問題是方法UIImage:named:總需要傳入硬編碼(寫死)的字符串參數,然后返回一個可空(optional)的UIImage。這就意味著可能會有兩種出錯的情況:一種是字符串的拼寫錯誤;另一種是對可選的UIImage不正確解包。
一種可以解決這個字符串拼寫錯誤的方式就是構建一個Image的常量文件,但是這不能解決出錯的第二種情況。在 Swift 中,有個更好的解決方案。可以擴展UIImage,把所有的Image名字作為枚舉類型,然后建立便利構造器來通過枚舉構造對應的Image。看代碼:
// UIImage+Extension.swift
import UIKit
extension UIImage {
enum AssetIdentifier: String {
// Image Names of Minions
case Bob, Dave, Jorge, Jerry, Tim, Kevin, Mark, Phil, Stuart
}
convenience init!(assetIdentifier: AssetIdentifier) {
self.init(named: assetIdentifier.rawValue)
}
}這樣,就可以通過以下的方式在任何需要的地方構建Image:
let minionBobImage = UIImage(assetIdentifier: .Bob) 這樣的方式是不是很清晰呀,哈哈。首先,使用了漂亮的枚舉值,關鍵是不再需要硬編碼的字符串了。并且,枚舉的值是自動填充出來的,不必擔心拼寫錯誤。其次,Image不再是可空的了,因為你可以確保它一定是存在的。
我自己建了個工程測試了一下,工程在 Github 可以下載,地址在 這里 。如果你想知道它如何在一個app中實現的,可以 check out 后看看。
Update
正如很多讀者指出的,有很多開源的第三方庫可以將Image名字導出成枚舉類型。
可以 check out 以下的第三方庫后查看:
同時,可以在下面添加任何的評論。
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!