tal*_*123 1 user-interface ios swift
我对Swift比较陌生。我只是想设计出租车应用而已。
我发现CGGradientLayer并认为这会为应用程序的顶部栏增加不错的效果。
我添加了它,由于某种原因,它没有完全扩展到视图宽度。
这是我的子类:
import UIKit
class GradientView: UIView {
let gradient = CAGradientLayer()
override func awakeFromNib() {
setupGradientView()
}
func setupGradientView() {
gradient.frame = self.frame
gradient.colors = [UIColor.white.cgColor, UIColor.init(white: 1.0, alpha: 0.0).cgColor]
gradient.startPoint = CGPoint.zero
gradient.endPoint = CGPoint(x: 0, y: 1)
gradient.locations = [0.9, 1.0]
self.layer.addSublayer(gradient)
}
}
Run Code Online (Sandbox Code Playgroud)
这就是结果。
绿色背景实际上UIView是子类也要应用的宽度。
您frame太早设置了渐变的。您应将其设置override为layoutSubviews:
override func layoutSubviews() {
super.layoutSubviews()
gradient.frame = self.bounds
}
Run Code Online (Sandbox Code Playgroud)
笔记:
self.bounds。那就是视图内部使用的坐标系。渐变是相对于放置的GradientView,如果将渐变GradientView放置在屏幕上的其他位置,则渐变不会更改(因为bounds在这种情况下,请勿更改,但会更改frame)。frame,layoutSubviews您将始终获得视图大小的最新值。