UIImage是什麼用來管理APP里的圖片資源,可以用來表示設備支持的圖片資源,不僅僅是jpg和png。UIImage是immutable的,因此也是線程安全的。iOS支持的所有的圖片格式鏈接不過,對於gif格式,只能展示第一幀。需要把gif分成若幹幀,分別展示。iOS本身的圖片緩存系統iOS本身有... ...
- UIImage是什麼
用來管理APP里的圖片資源,可以用來表示設備支持的圖片資源,不僅僅是jpg和png。 UIImage是immutable的,因此也是線程安全的。 - iOS支持的所有的圖片格式
鏈接 不過,對於gif格式,只能展示第一幀。需要把gif分成若幹幀,分別展示。 - iOS本身的圖片緩存系統
iOS本身有一個圖像緩存系統。系統在記憶體不夠使,會清除緩存中的一些內容。
使用init(named:in:compatibleWith:)
方法生成的image被加入到了系統緩存中去。因此適合於創建頻繁使用的圖片。這個方法在iOS9以後是線程安全的。
使用imageWithContentsOfFile:
的方法創建的image沒有被加入系統緩存中去,每次調用都會重新載入圖片。 - 如何比較兩張圖片的數據是否一致。
由於圖像存在緩存系統,因此唯一可以比較圖片數據是否相同的方法是isEqual(_:)
方法,這個方法比較真實的圖片數據。 - 從UIImage獲取圖像的其他表示方法
-
cgImage
屬性,在Core Graphics框架內。 -
ciImage
屬性,在Core Image框架內 UIImagePNGRepresentation(_:)
, png格式的數據-
UIImageJPEGRepresentation(_:_:)
, jpg格式的數據
-
- 圖片的方向 鏈接
- 圖片的size
以point度量的圖片的大小 - 圖片的scale
物理像素和邏輯像素的比值。size*scale就是以像素度量的圖片大小。 展示一系列圖片
UIImage可以展示一些列圖片,得到類似gif的圖片效果。這些圖片應該有相同的size和scale- 通過UIImage數組生成
class func animatedImage(with images: [UIImage], duration: TimeInterval) -> UIImage? class func animatedResizableImageNamed(_ name: String, capInsets: UIEdgeInsets, duration: TimeInterval) -> UIImage?
- 通過路徑生成
class func animatedImageNamed(_ name: String, duration: TimeInterval) -> UIImage? class func animatedResizableImageNamed(_ name: String, capInsets: UIEdgeInsets, resizingMode: UIImageResizingMode, duration: TimeInterval) -> UIImage?
其中,
name
是圖片路徑的首碼。