Чтобы ответить на этот вопрос твой,
У меня есть UIBezierPath в моем обычае UIView рисовать (_ Прямоугольник: CGRect) функцию. Я хотел бы заполнить путь градиентом цвета.
Допустим, у вас есть овальное путь,
let path = UIBezierPath(ovalIn: CGRect(x: 0, y: 0, width: 100, height: 100))
Чтобы создать градиент,
let gradient = CAGradientLayer()
gradient.frame = path.bounds
gradient.colors = [UIColor.magenta.cgColor, UIColor.cyan.cgColor]
Нам нужен слой маски для градиента,
let shapeMask = CAShapeLayer()
shapeMask.path = path.cgPath
Теперь установите это shapeLayer
как mask
отслоя и добавить его в view
«ы слоя, как subLayer
gradient.mask = shapeMask
yourCustomView.layer.addSublayer(gradient)
Update Создать базовый слой с инсультом и добавить перед созданием градиента слоя.
let shape = CAShapeLayer()
shape.path = path.cgPath
shape.lineWidth = 2.0
shape.strokeColor = UIColor.black.cgColor
self.view.layer.addSublayer(shape)
let gradient = CAGradientLayer()
gradient.frame = path.bounds
gradient.colors = [UIColor.magenta.cgColor, UIColor.cyan.cgColor]
let shapeMask = CAShapeLayer()
shapeMask.path = path.cgPath
gradient.mask = shapeMask
self.view.layer.addSublayer(gradient)
Возможная Дубликат [Свифт: градиент вдоль пути Безье (с использованием CALayers)] (http://stackoverflow.com/questions/27931076/swift-gradient-along-a-bezier-path-using-calayers) –
см. Это http://stackoverflow.com/questions/23074539/programmatically-create-a-uiview-with-color-gradient –
@ArtemNovichkov Я уже исследовал нить, ничего не происходит при заполнении UIBazierPath градиентом. Мое намерение - не полное представление, а UIBazierPath. Спасибо за комментарий. –