Ich versuche, einen Farbverlauf als Hintergrundfarbe einer Ansicht (Hauptansicht eines Storyboards) anzuwenden. Der Code wird ausgeführt, aber nichts ändert sich. Ich benutze xCode Beta 2 und Swift.
Hier ist der Code:
class Colors {
let colorTop = UIColor(red: 192.0/255.0, green: 38.0/255.0, blue: 42.0/255.0, alpha: 1.0)
let colorBottom = UIColor(red: 35.0/255.0, green: 2.0/255.0, blue: 2.0/255.0, alpha: 1.0)
let gl: CAGradientLayer
init() {
gl = CAGradientLayer()
gl.colors = [ colorTop, colorBottom]
gl.locations = [ 0.0, 1.0]
}
}
dann im view controller:
let colors = Colors()
func refresh() {
view.backgroundColor = UIColor.clearColor()
var backgroundLayer = colors.gl
backgroundLayer.frame = view.frame
view.layer.insertSublayer(backgroundLayer, atIndex: 0)
}
}
}
ios
ios7
swift
cagradientlayer
Justingordon
quelle
quelle
Antworten:
Die Farben, die Sie für den Verlauf bereitstellen, müssen vom Typ sein
CGColor
. Stellen Sie also Ihr ArrayCGColor
auf eingl.colors
.Der richtige Code lautet:
quelle
fatal error: array element cannot be bridged to Objective-C
beim Zuweisen zu einer.colors
Eigenschaft. Was kann daran falsch sein?[AnyObject]
und dann es zuweisen.colors
Eigenschaft.let c: [AnyObject] = [colorTop, colorBottom]
Xcode 11 • Swift 5.1
Sie können Ihre eigene Verlaufsansicht wie folgt entwerfen:
quelle
Und wenn Sie die Richtung des Verlaufs ändern müssen, müssen Sie startPoint und endPoint verwenden.
quelle
Ändern Sie einfach die oben genannte Antwort.
Rufen Sie dann diese Methode innerhalb auf
viewWillAppear
quelle
self.view.layer.addSublayer(gradientLayer)
durchself.view.layer.insertSublayer(gradientLayer, at: 0)
, dies wird die Ebene "unter" alle anderen setzenVersuchen Sie in Swift3 Folgendes :
quelle
Ich habe eine UIView-Erweiterung erstellt, um einen grundlegenden Verlauf auf jede Ansicht anzuwenden
quelle
CGPointMake(0.0,0.0)
kann derCGPointZero
KürzeIch habe diese Erweiterungen:
Verwendung:
quelle
self.layer.addSublayer(layer)
toself.layer.insertSublayer(layer, at: 0)
scheint zu verhindern, dass der Gradient alles im Interface Builder verschleiert (zumindest in meinem einen Test)Versuchen Sie dies, es funktioniert für mich,
Sie können den Start- und Endpunkt der Verlaufsfarbe hinzufügen.
Weitere Informationen finden Sie unter Beste Antwort. Sie können auch CAGradientLayer von Apple folgen
Hoffnungen Dies ist Hilfe für jemanden.
quelle
startPoint
undendPoint
für den Verlauf von links nach rechts:gradient.startPoint = CGPoint(x: 0.0, y: 0.5) gradient.endPoint = CGPoint(x: 1.0, y: 0.5)
und für von oben nach unten:gradient.startPoint = CGPoint(x: 0.5, y: 0.0) gradient.endPoint = CGPoint(x: 0.5, y: 1.0)
Erweitern Sie
UIView
mit dieser benutzerdefinierten Klasse.GradientView.swift
Verwendung
gradientView.colors = [UIColor.blackColor().colorWithAlphaComponent(0.8), UIColor.clearColor()]
Ergebnis
quelle
super.drawRect()
?super.drawRect()
hinzugefügt.@IBInspectable var topColor: UIColor = UIColor.lightGrayColor()
@IBInspectable var bottomColor: UIColor = UIColor.blueColor()
Dann können Sie unter Einstellungen Attribut-EditorEs ist einfach
Verwenden Sie wie folgt: -
quelle
Dieser Code funktioniert mit Swift 3.0
quelle
Swift 4
Fügen Sie eine Ansichtssteckdose hinzu
@IBOutlet weak var gradientView: UIView!
Fügen Sie der Ansicht einen Farbverlauf hinzu
quelle
Wenn Sie HEX anstelle von RGBA verwenden möchten, ziehen Sie einfach eine neue leere .swift und fügen Sie den folgenden Code hinzu:
Ziehen Sie in ähnlicher Weise eine weitere leere .swift-Datei und fügen Sie den folgenden Code hinzu:
Danach instanziieren Sie in View Controller unter class Ihre 'Color'-Klasse wie folgt:
neue Funktion hinzufügen:
Geben Sie diese Funktion in viewDidLoad an:
Sie sind fertig :)) Die Verwendung von HEX ist im Vergleich zu RGBA viel zu einfach. : D.
quelle
Swift 3 - Verwendet nur Texturen und SKSpriteNode, erfordert kein UIView
Verwendung:
quelle
Verwenden Sie den folgenden Code:
Rufen Sie diese Funktion wie folgt auf:
quelle
Geben Sie einfach den Rahmen der Ansicht an, in dem Sie die Verlaufsfarbe anzeigen möchten.
quelle
Hier ist eine Variante zum Einrichten in einer wiederverwendbaren Util-Klassendatei
In Ihrem Xcode-Projekt:
Erstellen Sie eine neue Swift-Klasse, nennen Sie sie UI_Util.swift, und füllen Sie sie wie folgt aus:
Jetzt können Sie die Funktion von jedem ViewController aus wie folgt aufrufen:
Vielen Dank an Katwal-Dipaks Antwort für den Funktionscode
quelle
Damit CAGradientLayer schnell auf jedes Objekt angewendet werden kann (horizontal und vertikal)
Wie benutzt man
Hier können Sie die Ausgabe überprüfen
quelle
Ich wollte einer Ansicht einen Farbverlauf hinzufügen und ihn dann mithilfe des automatischen Layouts verankern.
quelle
Fügen Sie Folgendes hinzu, um einen Farbverlauf in die Ebene einzufügen:
quelle
Hier ist eine schnelle Erweiterung, mit der Sie beliebig viele beliebige Farben übergeben können. Vor dem Einfügen eines Verlaufs werden alle vorherigen Farbverläufe entfernt und die neu eingefügte Verlaufsebene zur weiteren Bearbeitung zurückgegeben, falls erforderlich:
quelle
Saubererer Code, mit dem Sie einen beliebigen Code
UIColor
an eine Instanz derGradientLayer
Klasse übergeben können:quelle
Einfach zu bedienende Erweiterung für Swift 3
Verwenden Sie zu Ihrer Ansicht, Beispiel
quelle
Wenn Sie die Ansicht Sammlung (Mehrfachansicht) haben, tun Sie dies
quelle
Es gibt eine Bibliothek namens Chameleon ( https://github.com/viccalexander/Chameleon ), die für Verlaufsfarben verwendet werden kann. Es müssen sogar Gradientenstile implementiert werden. So können Sie es in Swift 4 Podfile Pod 'ChameleonFramework / Swift' hinzufügen ,: git => ' https://github.com/ViccAlexander/Chameleon.git ' ,: branch => 'wip / swift4'
quelle
Für diejenigen, die eine Objective C-Version der Antwort wünschen. Getestet und funktioniert unter iOS13
quelle
Eine Sache, die mir aufgefallen ist, ist, dass Sie einem UILabel keinen Farbverlauf hinzufügen können, ohne den Text zu löschen. Eine einfache Problemumgehung besteht darin, einen UIButton zu verwenden und die Benutzerinteraktion zu deaktivieren.
quelle
SwiftUI: Sie können die
LinearGradient
Struktur als erstes Element in a verwendenZStack
. Als "Boden" desZStack
wird es als Hintergrundfarbe dienen.AngularGradient
undRadialGradient
sind auch verfügbar.quelle
Ich habe die Antworten von Rohit Sisodia und MGM gemischt
So verwenden Sie schreiben: -
Ausgabe:
quelle