J'essaie d'appliquer un dégradé comme couleur d'arrière-plan d'une vue (vue principale d'un storyboard). Le code s'exécute, mais rien ne change. J'utilise xCode Beta 2 et Swift.
Voici le 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]
}
}
puis dans le contrôleur de vue:
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
la source
la source
Réponses:
Les couleurs que vous fournissez au dégradé doivent être de type
CGColor
. Alors définissez votre tableauCGColor
surgl.colors
.Le code correct est:
la source
fatal error: array element cannot be bridged to Objective-C
lors de l'attribution à la.colors
propriété. Quel est le problème avec cela?[AnyObject]
, puis attribuez-le à la.colors
propriété.let c: [AnyObject] = [colorTop, colorBottom]
Xcode 11 • Swift 5.1
Vous pouvez concevoir votre propre vue en dégradé comme suit:
la source
Et si vous avez besoin de modifier la direction du dégradé, vous devez utiliser startPoint et endPoint.
la source
Modifiez simplement la réponse mentionnée ci-dessus.
Appelez ensuite cette méthode dans
viewWillAppear
la source
self.view.layer.addSublayer(gradientLayer)
parself.view.layer.insertSublayer(gradientLayer, at: 0)
, cela mettra le calque "en dessous" de tous les autresDans Swift3, essayez ceci:
la source
J'ai créé une extension UIView pour appliquer un dégradé de base à n'importe quelle vue
la source
CGPointMake(0.0,0.0)
peut être remplacé parCGPointZero
par souci de concisionJ'ai ces extensions:
Usage:
la source
self.layer.addSublayer(layer)
enself.layer.insertSublayer(layer, at: 0)
semble empêcher le dégradé de tout obscurcir dans le constructeur d'interface (au moins dans mon seul test)Essayez ceci, cela fonctionne pour moi
Vous pouvez ajouter des points de départ et d'arrivée de la couleur du dégradé.
Pour une description plus détaillée, reportez-vous à la meilleure réponse ou vous pouvez suivre CAGradientLayer d'Apple
Espoirs C'est de l'aide pour quelqu'un.
la source
startPoint
etendPoint
pour le dégradé de gauche à droite:gradient.startPoint = CGPoint(x: 0.0, y: 0.5) gradient.endPoint = CGPoint(x: 1.0, y: 0.5)
et de haut en bas:gradient.startPoint = CGPoint(x: 0.5, y: 0.0) gradient.endPoint = CGPoint(x: 0.5, y: 1.0)
C'est facile
Utilisez comme ceci: -
la source
Prolongez
UIView
avec cette classe personnalisée.GradientView.swift
Usage
gradientView.colors = [UIColor.blackColor().colorWithAlphaComponent(0.8), UIColor.clearColor()]
Résultat
la source
super.drawRect()
?super.drawRect()
added.@IBInspectable var topColor: UIColor = UIColor.lightGrayColor()
@IBInspectable var bottomColor: UIColor = UIColor.blueColor()
Ensuite, vous pouvez voir dans les paramètres Editeur d'attributsCe code fonctionnera avec Swift 3.0
la source
Swift 4
Ajouter une sortie de vue
@IBOutlet weak var gradientView: UIView!
Ajouter un dégradé à la vue
la source
si vous souhaitez utiliser HEX au lieu de RGBA, faites simplement glisser un nouveau .swift vide et ajoutez le code mentionné ci-dessous:
de même, faites glisser un autre fichier .swift vide et ajoutez le code mentionné ci-dessous:
après cela dans le contrôleur de vue, sous la classe instanciez votre classe 'Color' comme ceci:
ajouter une nouvelle fonction:
indiquez cette fonction dans viewDidLoad:
vous avez terminé :)) utiliser HEX est beaucoup trop facile par rapport à RGBA. :RÉ
la source
Swift 3 - Utilise uniquement des textures et SKSpriteNode, ne nécessite pas UIView
Usage:
la source
Utilisez le code ci-dessous:
appelez cette fonction comme:
la source
Spécifiez simplement le cadre de la vue, où vous souhaitez afficher la couleur du dégradé.
la source
Voici une variante pour configurer cela dans un fichier de classe Util réutilisable
Dans votre projet Xcode:
Créez une nouvelle classe Swift, appelez-la UI_Util.swift et remplissez-la comme suit:
Vous pouvez maintenant appeler la fonction depuis n'importe quel ViewController comme ceci:
Merci à la réponse de katwal-Dipak pour le code de fonction
la source
Pour appliquer rapidement CAGradientLayer à n'importe quel objet (horizontal et vertical)
Comment utiliser
Vous pouvez vérifier la sortie ici
la source
Je voulais ajouter un dégradé à une vue, puis l'ancrer à l'aide de la mise en page automatique.
la source
Pour ajouter un dégradé au calque, ajoutez:
la source
Voici une extension rapide où vous pouvez transmettre n'importe quelle quantité de couleurs arbitraires. Il supprimera tous les dégradés précédents avant d'en insérer un et il renverra le calque de dégradé nouvellement inséré pour une manipulation ultérieure si nécessaire:
la source
Code plus propre qui vous permet d'en transmettre une
UIColor
à une instance de laGradientLayer
classe:la source
Extension facile à utiliser sur Swift 3
utiliser à votre vue, exemple
la source
Si vous avez une vue Collection (vue multiple), procédez comme suit
la source
Il existe une bibliothèque appelée Chameleon ( https://github.com/viccalexander/Chameleon ) que l'on peut utiliser pour les couleurs dégradées. Il a même des styles de dégradé à mettre en œuvre. Voici comment vous pouvez l'ajouter dans le podfile de swift 4 'ChameleonFramework / Swift',: git => ' https://github.com/ViccAlexander/Chameleon.git ',: branch => 'wip / swift4'
la source
Pour ceux qui veulent une version Objective C de la réponse. Testé et fonctionne sur iOS13
la source
Une chose que j'ai remarquée est que vous ne pouvez pas ajouter un dégradé à un UILabel sans effacer le texte. Une solution de contournement simple consiste à utiliser un UIButton et à désactiver l'interaction de l'utilisateur.
la source
SwiftUI: Vous pouvez utiliser la
LinearGradient
structure comme premier élément dans un fichierZStack
. En tant que "bas" duZStack
, il servira de couleur d'arrière-plan.AngularGradient
etRadialGradient
sont également disponibles.la source
J'ai mélangé les réponses Rohit Sisodia et MGM
Pour utiliser écrire: -
Production:
la source