Wenn Sie den folgenden Code in einen Spielplatz werden Sie die genaue gewünschte Ausgabe erhalten:
let view = UIView(frame: CGRectMake(0,0,200,100))
let layer = CAGradientLayer()
layer.frame = view.frame
layer.colors = [UIColor.greenColor().CGColor, UIColor.yellowColor().CGColor, UIColor.redColor().CGColor]
layer.locations = [0.0, 0.8, 1.0]
view.layer.addSublayer(layer)
XCPShowView("ident", view: view)
ausgeben:

Sie definieren einfach die Farben als ein Array von CGColors
und ein Array der gleichen Größe von NSNumber
s jeweils zwischen 0,0 und 1,0.
Dont verwenden startPoint
und endPoint
dafür - sie sind für die Definition von wo nach wo der Gradient in der Schicht gezeigt wird - es ist nicht etwas mit den Prozenten zu tun haben und die Farben usw.
Neuere Swift3 Version des Codes:
let view = UIView(frame: CGRect(x: 0, y: 0, width: 200, height: 100))
let layer = CAGradientLayer()
layer.frame = view.frame
layer.colors = [UIColor.green.cgColor, UIColor.yellow.cgColor, UIColor.red.cgColor]
layer.locations = [0.0, 0.8, 1.0]
view.layer.addSublayer(layer)
PlaygroundPage.current.liveView = view
wo genau kämpfen Sie? Die Ebene hat zwei Eigenschaften "Farben" und "Orte", die für Sie nützlich sein sollten. Welche Sprache übrigens? – luk2302
Ihr "Beispiel" ist nicht klar, erklären Sie was genau 0% -50%, 51% -80% und 81% -100% meinen und fügen Sie den Code hinzu, den Sie verwendet haben, damit jemand Ihnen das Problem zeigen kann, sonst können wir alles tun ist es, die Dokumentation zu zitieren. –
Die Farbe auf der Farbverlaufsschicht sollte so und so sein. Standardmäßig werden alle drei Farben gleichmäßig verteilt, was ich ändern möchte. Ich benutze Objective-C. Danke. –