如何將 UIImage 新增到 CALayer
你只需使用其 contents
屬性即可將影象新增到檢視的 layer
:
myView.layer.contents = UIImage(named: "star")?.CGImage
- 請注意,
UIImage
需要轉換為CGImage
。
如果你希望在自己的圖層中新增影象,可以這樣做:
let myLayer = CALayer()
let myImage = UIImage(named: "star")?.CGImage
myLayer.frame = myView.bounds
myLayer.contents = myImage
myView.layer.addSublayer(myLayer)
修改外觀
上面的程式碼生成了這樣的檢視。淺藍色是 UIView
,深藍色的星星是 UIImage
。
但是,正如你所看到的,它看起來像是畫素化的。這是因為 UIImage
小於 UIView
所以它被縮放以填充檢視,這是預設情況下你沒有指定任何其他內容。
以下示例顯示了圖層的 contentsGravity
屬性的變體。程式碼如下所示:
myView.layer.contents = UIImage(named: "star")?.CGImage
myView.layer.contentsGravity = kCAGravityTop
myView.layer.geometryFlipped = true
在 iOS 中,如果你正在執行具有頂部或底部重力的任何操作,則可能需要將 geometryFlipped
屬性設定為 true
,否則它將與你期望的相反。 (只有重力垂直翻轉,而不是內容呈現。如果你在翻轉內容時遇到問題,請參閱此 Stack Overflow 應答 。)
每個 contentsGravity
設定下面有兩個 UIView
示例,一個檢視大於 UIImage
,另一個檢視小。這樣你就可以看到縮放和重力的影響。
kCAGravityResize
這是預設值。
kCAGravityResizeAspect
kCAGravityResizeAspectFill
kCAGravityCenter
kCAGravityTop
kCAGravityBottom
kCAGravityLeft
kCAGravityRight
kCAGravityTopLeft
kCAGravityTopRight
kCAGravityBottomLeft
kCAGravityBottomRight
有關
筆記
- 此示例最初來自此 Stack Overflow 答案 。