如何在Swift 2.0中获得正确的UIView大小或范围?

Raj*_*n S 4 uiview ios swift

嗨,我很难将渐变色应用于我的UIView.它被正确应用,但颜色边界随水平和纵向方向而变化.

如果我在纵向方向上设置正确,那么当我将设备翻转到水平时,不会改变渐变视图的边界.

那么,如何获得UIView水平和纵向设备方向的正确约束和大小?

非常感谢你的帮助!!!

代码我尝试过:

import UIKit

class ViewController: UIViewController {


    @IBOutlet var viewBar: UIView!


    override func viewDidLoad() {
        super.viewDidLoad()

        viewBar.layer.shadowOpacity = 0.5
        viewBar.layer.shadowOffset = CGSize(width: 3.0, height:2.0)
        viewBar.layer.shadowRadius = 5.0
        viewBar.layer.shadowColor = UIColor.blueColor().CGColor

        let gradient: CAGradientLayer = CAGradientLayer()

        gradient.colors = [UIColor.blueColor().CGColor, UIColor.redColor().CGColor]
        gradient.locations = [0.0 , 1.0]
        gradient.startPoint = CGPoint(x: 0.0, y: 1.0)
        gradient.endPoint = CGPoint(x: 1.0, y: 1.0)
        gradient.frame.size = self.viewBar.bounds.size

        self.viewBar.layer.insertSublayer(gradient, atIndex: 0)

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()

    }


}
Run Code Online (Sandbox Code Playgroud)

编码输出:

在此输入图像描述

Tj3*_*j3n 9

viewDidLoad布局还没有发生,所以你得到了错误的框架,移动gradient.frame.size = self.viewBar.bounds.size到任一viewDidLayoutSubviews:viewWillAppear:那样,你gradient得到正确的框架.

  override func viewDidLayoutSubviews() {
    gradient.frame.size = self.viewBar.bounds.size
  }
Run Code Online (Sandbox Code Playgroud)