Я пытаюсь применить градиент в качестве цвета фона представления (основной вид раскадровки). Код работает, но ничего не меняется. Я использую xCode Beta 2 и Swift.
Вот код:
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]
}
}
затем в контроллере вида:
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
источник
источник
Ответы:
Цвета, которые вы предоставляете градиенту, должны иметь тип
CGColor
. Так что установите свой массивCGColor
вgl.colors
.Правильный код:
источник
fatal error: array element cannot be bridged to Objective-C
при назначении.colors
собственности. Что может быть не так с этим?[AnyObject]
и затем присвойте его.colors
свойству.let c: [AnyObject] = [colorTop, colorBottom]
Xcode 11 • Swift 5.1
Вы можете создать свой собственный вид градиента следующим образом:
источник
И если вам нужно изменить направление градиента, вы должны использовать startPoint и endPoint.
источник
Просто изменив вышеупомянутый ответ.
Затем вызовите этот метод в течение
viewWillAppear
источник
self.view.layer.addSublayer(gradientLayer)
сself.view.layer.insertSublayer(gradientLayer, at: 0)
, это поставит слой «ниже» всех остальныхВ Swift3 попробуйте это:
источник
Я сделал расширение UIView, чтобы применить базовый градиент к любому представлению
источник
CGPointMake(0.0,0.0)
может быть замененоCGPointZero
на краткостьУ меня есть эти расширения:
Использование:
источник
self.layer.addSublayer(layer)
кself.layer.insertSublayer(layer, at: 0)
кажется , чтобы предотвратить градиент от запутывания все в интерфейсе строителя (по крайней мере , в моем одном тесте)Попробуйте это, это работает для меня,
Вы можете добавить начальную и конечную точку цвета градиента.
Для более подробного описания см. Лучший ответ или вы можете следить за CAGradientLayer от Apple
Надежды Это помощь для кого-то.
источник
startPoint
иendPoint
для слева направо градиента:gradient.startPoint = CGPoint(x: 0.0, y: 0.5) gradient.endPoint = CGPoint(x: 1.0, y: 0.5)
и сверху вниз:gradient.startPoint = CGPoint(x: 0.5, y: 0.0) gradient.endPoint = CGPoint(x: 0.5, y: 1.0)
Это просто
Используйте как это: -
источник
Расширьте
UIView
этот пользовательский класс.GradientView.swift
использование
gradientView.colors = [UIColor.blackColor().colorWithAlphaComponent(0.8), UIColor.clearColor()]
результат
источник
super.drawRect()
?super.drawRect()
добавлением.@IBInspectable var topColor: UIColor = UIColor.lightGrayColor()
@IBInspectable var bottomColor: UIColor = UIColor.blueColor()
Этот код будет работать с Swift 3.0
источник
Swift 4
Добавить точку просмотра
@IBOutlet weak var gradientView: UIView!
Добавить градиент к виду
источник
если вы хотите использовать HEX вместо RGBA, просто перетащите новый пустой .swift и добавьте указанный ниже код:
аналогично перетащите еще один пустой файл .swift и добавьте указанный ниже код:
после этого в контроллере представления под классом создайте экземпляр класса 'Color' следующим образом:
добавить новую функцию:
укажите эту функцию в viewDidLoad:
все готово :)) использовать HEX слишком просто по сравнению с RGBA. : D
источник
Swift 3 - использует только текстуры и SKSpriteNode, не требует UIView
Использование:
источник
Используйте код ниже:
вызвать эту функцию как:
источник
Просто укажите рамку вида, где вы хотите показать цвет градиента.
источник
Вот вариант для настройки этого в повторно используемом файле класса Util
В вашем проекте Xcode:
Создайте новый класс Swift, назовите его UI_Util.swift, и заполните его следующим образом:
Теперь вы можете вызвать функцию из любого ViewController следующим образом:
Благодаря ответу Катвала-Дипака за код функции
источник
Для быстрого применения CAGradientLayer к любому объекту (горизонтальному и вертикальному)
Как пользоваться
Вы можете проверить вывод здесь
источник
Я хотел добавить градиент к представлению, а затем привязать его с помощью автоматического макета.
источник
Чтобы добавить градиент в слой, добавьте:
источник
Вот быстрое расширение, где вы можете передать любое количество произвольных цветов. Он удалит все предыдущие градиенты перед тем, как вставить один, и вернет вновь вставленный градиентный слой для дальнейшей манипуляции, если это необходимо:
источник
Более чистый код, который позволяет вам передать любой
UIColor
экземплярGradientLayer
класса:источник
Простое в использовании расширение на Swift 3
используйте, по вашему мнению, пример
источник
Если у вас есть представление Коллекция (Multiple View), сделайте это
источник
Существует библиотека под названием Chameleon ( https://github.com/viccalexander/Chameleon ), которую можно использовать для градиентных цветов. У него даже есть стили градиента для реализации. Вот как вы можете добавить его в быстром модуле 4 подфайла 'ChameleonFramework / Swift',: git => ' https://github.com/ViccAlexander/Chameleon.git ',: branch => 'wip / swift4'
источник
Для тех, кто хочет Objective C версия ответа. Протестировано и работает на iOS13
источник
Одна вещь, которую я заметил, - вы не можете добавить градиент к UILabel без очистки текста. Один простой обходной путь - использовать UIButton и отключить взаимодействие с пользователем.
источник
SwiftUI: Вы можете использовать
LinearGradient
структуру в качестве первого элемента вZStack
. В качестве «нижней части»ZStack
будет использоваться цвет фона.AngularGradient
иRadialGradient
также доступны.источник
Я смешал ответы Rohit Sisodia и MGM
Использовать написать: -
Вывод:
источник