Estou tentando aplicar um gradiente como a cor de plano de fundo de uma exibição (exibição principal de um storyboard). O código é executado, mas nada muda. Estou usando o xCode Beta 2 e o Swift.
Aqui está o 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]
}
}
então no controlador de exibição:
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
fonte
fonte
Respostas:
As cores que você fornece ao gradiente devem ser do tipo
CGColor
. Então defina sua matriz deCGColor
comogl.colors
.O código correto é:
fonte
fatal error: array element cannot be bridged to Objective-C
ao atribuir à.colors
propriedade. O que pode estar errado com isso?[AnyObject]
e depois atribuí-lo à.colors
propriedadelet c: [AnyObject] = [colorTop, colorBottom]
Xcode 11 • Swift 5.1
Você pode criar sua própria Gradient View da seguinte maneira:
fonte
E se você precisar alterar a direção do gradiente, use o startPoint e o endPoint.
fonte
Apenas modificando a resposta da menção acima.
Em seguida, chame esse método dentro de
viewWillAppear
fonte
self.view.layer.addSublayer(gradientLayer)
comself.view.layer.insertSublayer(gradientLayer, at: 0)
, isso vai colocar a camada "abaixo" de todos os outrosNo Swift3, tente o seguinte:
fonte
Eu fiz uma extensão UIView para aplicar um gradiente básico a qualquer visualização
fonte
CGPointMake(0.0,0.0)
pode ser substituídoCGPointZero
por brevidadeEu tenho estas extensões:
Uso:
fonte
self.layer.addSublayer(layer)
queself.layer.insertSublayer(layer, at: 0)
parece impedir que o gradiente de ofuscar tudo no construtor de interface (pelo menos na minha um test)Tente isso, está funcionando para mim,
Você pode adicionar o ponto inicial e final da cor gradiente.
Para obter uma descrição mais detalhada, consulte Melhor resposta ou você pode seguir CAGradientLayer da Apple
Esperanças Isso é ajuda para alguém.
fonte
startPoint
eendPoint
para o gradiente da esquerda para a direita:gradient.startPoint = CGPoint(x: 0.0, y: 0.5) gradient.endPoint = CGPoint(x: 1.0, y: 0.5)
e de cima para baixo:gradient.startPoint = CGPoint(x: 0.5, y: 0.0) gradient.endPoint = CGPoint(x: 0.5, y: 1.0)
É fácil
Use assim: -
fonte
Estenda
UIView
com esta classe personalizada.GradientView.swift
Uso
gradientView.colors = [UIColor.blackColor().colorWithAlphaComponent(0.8), UIColor.clearColor()]
Resultado
fonte
super.drawRect()
?super.drawRect()
adicionado.@IBInspectable var topColor: UIColor = UIColor.lightGrayColor()
@IBInspectable var bottomColor: UIColor = UIColor.blueColor()
Então você pode ver nas definições Editor de atributoEste código funcionará com o Swift 3.0
fonte
Swift 4
Adicionar uma saída de exibição
@IBOutlet weak var gradientView: UIView!
Adicionar gradiente à visualização
fonte
Se você deseja usar o HEX em vez do RGBA, basta arrastar um novo .swift vazio e adicionar o código abaixo mencionado:
Da mesma forma, arraste outro arquivo .swift vazio e adicione o código abaixo mencionado:
depois disso, no view controller, na classe instanciar sua classe 'Color' da seguinte forma:
adicione uma nova função:
declare essa função em viewDidLoad:
pronto :)) usar o HEX é muito fácil se comparado ao RGBA. : D
fonte
Swift 3 - Usa apenas texturas e SKSpriteNode, não requer UIView
Uso:
fonte
Use o código abaixo:
chame esta função como:
fonte
Basta especificar o quadro da vista, onde deseja mostrar a cor do gradiente.
fonte
Aqui está uma variação para configurar isso em um arquivo de classe Util reutilizável
No seu projeto do Xcode:
Crie uma nova classe Swift, chamada UI_Util.swift, e preencha-a da seguinte maneira:
Agora você pode chamar a função de qualquer ViewController da seguinte maneira:
Graças à resposta de Katwal-Dipak para o código de função
fonte
Para aplicar rapidamente CAGradientLayer a qualquer objeto (horizontal e vertical)
Como usar
Você pode verificar a saída aqui
fonte
Eu queria adicionar um gradiente a uma visualização e ancorá-lo usando o layout automático.
fonte
Para adicionar gradiente à camada, adicione:
fonte
Aqui está uma extensão rápida, na qual você pode transmitir qualquer quantidade de cores arbitrárias. Ele removerá todos os gradientes anteriores antes de inserir um e retornará a nova camada de gradiente inserida para manipulação adicional, se necessário:
fonte
Código mais limpo que permite passar algum
UIColor
para uma instância daGradientLayer
classe:fonte
Extensão fácil de usar no swift 3
use para a sua visão, exemplo
fonte
Se você possui a coleção View (Multiple View), faça isso
fonte
Existe uma biblioteca chamada Chameleon ( https://github.com/viccalexander/Chameleon ) que pode ser usada para cores degradê. Ele ainda tem estilos de gradiente para implementar. É assim que você pode adicioná-lo no swift 4 podfile pod 'ChameleonFramework / Swift',: git => ' https://github.com/ViccAlexander/Chameleon.git ',: branch => 'wip / swift4'
fonte
Para aqueles que desejam uma versão Objective C da resposta. Testado e funciona no iOS13
fonte
Uma coisa que notei é que você não pode adicionar um gradiente a um UILabel sem limpar o texto. Uma solução simples é usar um UIButton e desativar a interação do usuário.
fonte
SwiftUI: Você pode usar a
LinearGradient
estrutura como o primeiro elemento em aZStack
. Como o "fundo" doZStack
, ele servirá como a cor de fundo.AngularGradient
eRadialGradient
também estão disponíveis.fonte
Misturei as respostas Rohit Sisodia e MGM
Para usar a gravação: -
Resultado:
fonte