2017-10-30 13 views
0

私はUIImageCGImagelayerのコンテンツとして設定しようとしていたので、layerviewlayerに追加しようとしていました。
黄色のビューの中央には5つ星が必要です。それが私が望むものです。
しかし、星の中心は、のoriginと一致しているようです。 これを修正するにはどうすればよいですか?ここでCGImageをCALayerの中央に配置する方法は?

func putOnStars() { 
    let rect = UIView(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height)) 
    rect.backgroundColor = .yellow 
    view.addSubview(rect) 

    let baseLayer = CALayer() 
    baseLayer.contents = UIImage(named: "stars")?.cgImage 
    baseLayer.contentsGravity = kCAGravityCenter 
    rect.layer.addSublayer(baseLayer) 

} 

enter image description here テストしたいの場合はあなたのための星のイメージがあります。 enter image description here

答えて

3

baseLayerのでbaseLayer.contentsGravity = kCAGravityCenterが正常に動作しますが、それはまだpotision(0、0)になります定義されたフレームを持っていません。

1:rectと同じですbaseLayerのフレームを作る

は、2つの解決策があります。

baseLayer.frame = rect.frame 

2:このコードを実装rectの中心にbaseLayerの位置を設定します。このコードを実装:

baseLayer.position = rect.center 
+0

ありがとうございます。私はフレームを設定する必要はないと思った。 – JsW

2

、層のframeを与え、CALayerの中心にCALayerのあらゆる種類のすなわち

let baseLayer = CALayer() 
    baseLayer.frame = rect.bounds //This Line 
    baseLayer.contents = UIImage(named: "stars")?.cgImage 
    baseLayer.contentsGravity = kCAGravityCenter 
    rect.layer.addSublayer(baseLayer) 

starsimageを配置するには、あなたがそのframeを定義する必要があります明示的に。

+0

ありがとうございます。それはうまくいきますが、私はシアンの答えが早いので、それを適応させます。 – JsW

+0

確かに問題はありません。ハッピーコーディング.. :) – PGDev

関連する問題