2017-06-29 2 views
0

私はbgLayer: CAGradientLayerを持っていますが、それ以上のサイズを持つは親ビューbgViewです。レイヤーがbgView.layer.insertSublayerを使用して正しく挿入されていますが、私のbgLayerのフレームを私の小さいbgViewに集中させることはできません。iOS - CAGradientLayerを親UIViewに集中

bgLayerbgViewに集中させるにはどうすればよいですか?

答えて

1

私は小さいのUIViewを中心

大きなグラデーションビュー...これはあなたが何を意味するかと考えています。 100 x 100と同じ勾配の大きさ:150 x 150

enter image description hereenter image description here

両方の画像が同じビュー・サイズを使用する:最初の画像は、第2の画像.false..clipsToBounds = trueです。このコードを「プレイグラウンド」ページに貼り付けて、そのコードがどのように機能するかを確認することができます。

import UIKit 
import PlaygroundSupport 

let container = UIView(frame: CGRect(x: 0, y: 0, width: 300, height: 300)) 

container.backgroundColor = UIColor(red: 0.3, green: 0.5, blue: 1.0, alpha: 1.0) 

PlaygroundPage.current.liveView = container 

class ViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     // 150 x 150 frame for the gradient layer 
     let gFrame = CGRect(x: 0, y: 0, width: 150, height: 150) 

     // 100 x 100 frame for the View 
     let vFrame = CGRect(x: 100, y: 100, width: 100, height: 100) 

     let v = UIView(frame: vFrame) 
     self.view.addSubview(v) 

     // add a border to the UIView so we can see its frame 
     v.layer.borderWidth = 2.0 

     // set up the Gradient Layer 
     let gradient = CAGradientLayer() 
     gradient.colors = [UIColor.red.cgColor,UIColor.yellow.cgColor] 
     gradient.locations = [0.0, 1.0] 
     gradient.startPoint = CGPoint(x: 0.0, y: 0.0) 
     gradient.endPoint = CGPoint(x: 1.0, y: 1.0) 

     // set the initial size of the gradient frame 
     gradient.frame = gFrame 

     // center the gradient frame over (or inside, if smaller) the view frame 
     gradient.frame.origin.x = (v.frame.size.width - gradient.frame.size.width)/2 
     gradient.frame.origin.y = (v.frame.size.height - gradient.frame.size.height)/2 

     // add the gradient layer to the view 
     v.layer.insertSublayer(gradient, at: 0) 

     // set to true to clip the gradient layer 
     // set to false to allow the gradient layer to extend beyond the view 
     v.clipsToBounds = true 

    } 

} 

let vc = ViewController() 
container.addSubview(vc.view) 
+0

素晴らしい!私はそれらを中心にする公式について混乱していました。 – juniorgarcia

関連する問題