我想绘制一个UIView层,但是当我这样做时,该层的框架与UIView的框架不相等(在预览中)。
![enter image description here](https://istack.dev59.com/k0EPp.webp)
class ViewController: UIViewController {
var graphHeight:CGFloat = 100
var graphSize:CGFloat!
override func viewDidLoad() {
super.viewDidLoad()
graphSize = self.view.frame.height/CGFloat(M_PI)
let graphRect:CGRect = CGRectMake(0, graphHeight, self.view.frame.width, graphSize)
let background = blueGardient()
var theView:UIView = UIView(frame: graphRect)
background.frame = theView.frame
theView.backgroundColor = UIColor.yellowColor()
theView.layer.cornerRadius = 8
theView.layer.borderWidth = 1
theView.layer.borderColor = UIColor.redColor().CGColor
theView.layer.insertSublayer(background, atIndex: 0)
self.view.addSubview(theView)
}
func blueGardient()->CAGradientLayer{
let topColor = UIColor(red: 0, green: 0, blue: 255, alpha: 0.7)
let bottomColor = UIColor(red: 0, green: 0, blue: 255, alpha: 0.9)
let gradientColors: [CGColor] = [topColor.CGColor, bottomColor.CGColor]
let gradientLocations: [Float] = [0.0, 1.0]
let gradientLayer: CAGradientLayer = CAGradientLayer()
gradientLayer.colors = gradientColors
gradientLayer.locations = gradientLocations
return gradientLayer
}
}
框架是相等的。
(0.0,100.0,320.0,180.800015352393)
(0.0,100.0,320.0,180.800015352393)
但是没有显示相等。我尝试使用View.layer.frame,但没有成功...
bounds.origin
可能不总是(0,0),所以我认为你的第二个解决方案更好。 - Aaron Bragertransform
可能会使frame
失效,最好使用bounds.size
。 - rintaro