Как замаскировать, анимировать и добавить тень к CAShapeLayer?IOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Гость
 Как замаскировать, анимировать и добавить тень к CAShapeLayer?

Сообщение Гость »


Как применить тень к каждому фрагменту, сохранив текущую анимацию? Я попробовал поместить его на сам слой, но тень не видна. Я также попробовал создать еще один слой с прозрачным фоном, но с чистым фоном тень не работает.
override func draw(_ rect: CGRect) { super.draw(прямоугольный) Layer.sublayers?.filter {$0 — CAShapeLayer}.forEach {$0.removeFromSuperlayer() } let totalValue = data.reduce(0.0) { $0 + $1.value } пусть центр = CGPoint (x: rect.midX, y: rect.midY) вар startAngle: CGFloat = -CGFloat.pi/2 вар cumulativeDelay: CFTimeInterval = 0 разрывSizeDegrees = data.count == 1? 0: пробелсизедегреес data.forEach {значение в пусть сегментЗначение = CGFloat(значение.значение) пусть цвет = значение.цвет let endAngle = startAngle + (segmentValue / CGFloat(totalValue)) * 2 * .pi пусть внешнийРадиус = rect.width/2 let OuterStartAngle = startAngle + GapSizeDegrees.toRadians() let OuterEndAngle = endAngle - GapSizeDegrees.toRadians() let path = UIBezierPath (arcCenter: center, radius: externalRadius, startAngle: externalStartAngle, endAngle: externalEndAngle, по часовой стрелке: true) пусть внутреннийРадиус = ВнешнийРадиус - ХодШирины path.addArc(withCenter: center, radius: InnerRadius, startAngle: externalEndAngle - GapSizeDegrees / rect.width, endAngle: OuterStartAngle + GapSizeDegrees / rect.width, по часовой стрелке: false) путь.закрыть() пусть shapeLayer = CAShapeLayer() shapeLayer.path = path.cgPath shapeLayer.fillColor = color.cgColor shapeLayer.strokeColor = color.cgColor Layer.addSublayer(shapeLayer) animateSliceFilling (sliceLayer: shapeLayer, center: center, radius: externalRadius, InnerRadius: InnerRadius, startAngle: startAngle, endAngle: endAngle, задержка: cumulativeDelay) cumulativeDelay += Consts.Appearence.animationDuration / Double(data.count) начальный угол = конечный угол } } частная функция animateSliceFilling (sliceLayer: CAShapeLayer, центр: CGPoint, радиус: CGFloat, внутреннийРадиус: CGFloat, startAngle: CGFloat, endAngle: CGFloat, задержка: CFTimeInterval) { пусть MaskLayer = CAShapeLayer() пусть MaskPath = UIBezierPath (arcCenter: центр, радиус: (радиус + внутреннийРадиус) / 2, startAngle: startAngle, endAngle: endAngle, по часовой стрелке: true) MaskLayer.path = MaskPath.cgPath MaskLayer.fillColor = UIColor.clear.cgColor MaskLayer.strokeColor = UIColor.black.cgColor MaskLayer.lineWidth = ширина штриха маскаLayer.strokeEnd = 0,0 срезСлой.маска = слой маски let анимация = CABasicAnimation(keyPath: "strokeEnd") анимация.fromValue = 0 анимация.toValue = 1 анимация.длительность = Consts.Appearence.animationDuration / Double(data.count) анимация.beginTime = CACurrentMediaTime() + задержка анимация.fillMode = .forwards анимация.isRemovedOnCompletion = ложь MaskLayer.add(animation, forKey: "strokeEndAnimation") }
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Анимация прохождения CAShapeLayer x UIBezierPath
    Anonymous » » в форуме IOS
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Как создать ластик для CALayer.SubLayer с использованием CAShapeLayer в Swift
    Anonymous » » в форуме IOS
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Анимация uibezierpath с Cashapelayer и Cabasicanimation
    Anonymous » » в форуме IOS
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Анимация uibezierpath с Cashapelayer и Cabasicanimation
    Anonymous » » в форуме IOS
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Cashapelayer перевернул координату при использовании с IOS11 Vision
    Anonymous » » в форуме IOS
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous

Вернуться в «IOS»