Estoy tratando de aplicar un degradado como el color de fondo de una Vista (vista principal de un guión gráfico). El código se ejecuta, pero nada cambia. Estoy usando xCode Beta 2 y Swift.
Aquí está el código:
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]
}
}
luego en el controlador de vista:
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
fuente
fuente
Respuestas:
Los colores que está proporcionando al degradado deben ser de tipo
CGColor
. Así que configura tu matriz deCGColor
agl.colors
.El código correcto es:
fuente
fatal error: array element cannot be bridged to Objective-C
al asignar a la.colors
propiedad. ¿Qué puede estar mal con esto?[AnyObject]
y luego asígnela a la.colors
propiedad.let c: [AnyObject] = [colorTop, colorBottom]
Xcode 11 • Swift 5.1
Puede diseñar su propia Vista de degradado de la siguiente manera:
fuente
Y si necesita cambiar la dirección del gradiente, debe usar startPoint y endPoint.
fuente
Simplemente modificando la respuesta mencionada anteriormente.
Entonces llame a este método dentro de
viewWillAppear
fuente
self.view.layer.addSublayer(gradientLayer)
conself.view.layer.insertSublayer(gradientLayer, at: 0)
, esto pondrá la capa "debajo" de todos los demásEn Swift3 intente esto:
fuente
Hice una extensión UIView para aplicar un degradado básico a cualquier vista
fuente
CGPointMake(0.0,0.0)
se puede reemplazarCGPointZero
por brevedadTengo estas extensiones:
Uso:
fuente
self.layer.addSublayer(layer)
toself.layer.insertSublayer(layer, at: 0)
parece evitar que el gradiente ofusque todo en el generador de interfaces (al menos en mi única prueba)Prueba esto, me está funcionando,
Puede agregar el punto inicial y final del color degradado.
Para obtener una descripción más detallada, consulte Mejor respuesta o puede seguir CAGradientLayer de Apple
Esperanzas Esto es ayuda para alguien.
fuente
startPoint
yendPoint
para el gradiente de izquierda a derecha:gradient.startPoint = CGPoint(x: 0.0, y: 0.5) gradient.endPoint = CGPoint(x: 1.0, y: 0.5)
y de arriba a abajo:gradient.startPoint = CGPoint(x: 0.5, y: 0.0) gradient.endPoint = CGPoint(x: 0.5, y: 1.0)
Es fácil
Use así: -
fuente
Amplíe
UIView
con esta clase personalizada.GradientView.swift
Uso
gradientView.colors = [UIColor.blackColor().colorWithAlphaComponent(0.8), UIColor.clearColor()]
Resultado
fuente
super.drawRect()
?super.drawRect()
agregado.@IBInspectable var topColor: UIColor = UIColor.lightGrayColor()
@IBInspectable var bottomColor: UIColor = UIColor.blueColor()
Entonces puede ver en la configuración Editor de atributosEste código funcionará con Swift 3.0
fuente
Swift 4
Agregar una salida de vista
@IBOutlet weak var gradientView: UIView!
Agregar degradado a la vista
fuente
si desea usar HEX en lugar de RGBA, simplemente arrastre un nuevo .swift vacío y agregue el código mencionado a continuación:
de manera similar, arrastre otro archivo .swift vacío y agregue el código mencionado a continuación:
después de eso en el controlador de vista, en clase instanciará su clase 'Color' de esta manera:
agregar una nueva función:
indique esa función en viewDidLoad:
ya terminaste :)) usar HEX es demasiado fácil si lo comparamos con RGBA. :RE
fuente
Swift 3: utiliza solo texturas y SKSpriteNode, no requiere UIView
Uso:
fuente
Use el siguiente código:
llama a esta función como:
fuente
Simplemente especifique el Marco de la vista, donde desea mostrar el color del degradado.
fuente
Aquí hay una variación para configurar esto en un archivo de clase Util reutilizable
En su proyecto Xcode:
Cree una nueva clase Swift, llámela UI_Util.swift y llénela de la siguiente manera:
Ahora puede llamar a la función desde cualquier ViewController así:
Gracias a la respuesta de Katwal-Dipak para el código de función
fuente
Para aplicar rápidamente CAGradientLayer a cualquier objeto (horizontal y vertical)
Cómo utilizar
Puedes consultar la salida aquí
fuente
Quería agregar un degradado a una vista y luego anclarlo usando el diseño automático.
fuente
Para agregar degradado a la capa, agregue:
fuente
Aquí hay una extensión rápida donde puede pasar cualquier cantidad de colores arbitrarios. Eliminará los gradientes anteriores antes de insertar uno y devolverá la capa de gradiente recién insertada para una mayor manipulación si es necesario:
fuente
Código más limpio que le permite pasar cualquiera
UIColor
a una instancia de laGradientLayer
clase:fuente
Extensión fácil de usar en swift 3
utilizar a su vista, ejemplo
fuente
Si tiene vista Colección (Vista múltiple), haga esto
fuente
Hay una biblioteca llamada Chameleon ( https://github.com/viccalexander/Chameleon ) que se puede usar para degradar colores. Incluso tiene estilos de gradiente para implementar. Así es como puede agregarlo en el pod de archivos de swift 4 'ChameleonFramework / Swift',: git => ' https://github.com/ViccAlexander/Chameleon.git ',: branch => 'wip / swift4'
fuente
Para aquellos que desean una versión del objetivo C de la respuesta. Probado y funciona en iOS13
fuente
Una cosa que noté es que no puedes agregar un degradado a un UILabel sin borrar el texto. Una solución simple es usar un UIButton y deshabilitar la interacción del usuario.
fuente
SwiftUI: puede usar la
LinearGradient
estructura como el primer elemento en aZStack
. Como la "parte inferior" de laZStack
, servirá como el color de fondo.AngularGradient
yRadialGradient
también están disponibles.fuente
He mezclado las Rohit Sisodia y MGM respuestas
Para usar escribir: -
Salida:
fuente