Вы можете использовать UIView в UIImageView с «погрузочным кругом», как изображение и просто позволить повернуть его. Вот пример класса:
import UIKit
class CircularLoadingView: UIView {
@IBOutlet weak var rotatingImage: UIImageView!
let duration: Double = 1
func startAnimation() {
let animation = CABasicAnimation(keyPath: "transform.rotation.z")
animation.toValue = NSNumber(floatLiteral: M_PI * 2.0 * duration)
animation.duration = duration
animation.isCumulative = true
animation.repeatCount = Float(CGFloat.greatestFiniteMagnitude)
rotatingImage.layer.add(animation, forKey: "animationKey")
UIView.animate(withDuration: duration, animations: {
self.alpha = 1
})
}
}
Просто добавьте UIView и установите CircularLoadingView как пользовательский класс. Добавьте UIImageView, установите изображение, которое хотите повернуть, установите выходные точки и ограничения и посмотрите, что произойдет.
Но с этой целью вам нужно изображение, которое вы должны создать или найти.
Если это вам не поможет, возможно, этот старый raywenderlich tutorial может. Там они показывают, как сделать круговой индикатор с CAShapeLayer.
Это может быть не лучшее решение, но вы можете легко анимировать массив текстур. Или, если вы ищете что-то более динамичное, вы можете использовать узел обрезки (хотя узлы урожая также могут быть дорогими) с помощью SKActions для получения аналогичного эффекта. Имейте в виду, что производительность SKShapeNode плохая, если вы используете только круговой загрузчик для своего пользовательского интерфейса, тогда производительность не должна быть проблемой. Только если вам нужно использовать его в игре, если вы, возможно, решите не использовать его. –
, к сожалению, мне это нужно для игры, но цвет круга и граница динамичны. – grape1
Одним из способов сделать это может быть преобразование CCProgressTimer из cocos2D в Metal/SpriteKit. Он использует прогрессивный квадрат квадратного треугольника, чтобы «замаскировать» текстуру. Это очень элегантное и эффективное решение: http://fancyratstudios.com/2010/02/programming/progresstimer-for-cocos2d/ – Confused