自定义 UIActivityIndicatorView
时间: 2023-11-22 16:52:57 浏览: 51
要自定义 UIActivityIndicatorView,您需要遵循以下步骤:
1. 创建一个新的 UIView,并将其大小设置为您想要的指示器的大小。
2. 在 UIView 中添加一个 CAShapeLayer,并设置其填充颜色和线宽。
3. 使用 CABasicAnimation 创建旋转动画,并将其添加到 CAShapeLayer 上。
4. 将 UIView 添加到您的视图层次结构中,并在需要时启动动画。
下面是一些示例代码,演示如何创建一个自定义的 UIActivityIndicatorView:
```swift
class CustomActivityIndicatorView: UIView {
private let shapeLayer = CAShapeLayer()
override init(frame: CGRect) {
super.init(frame: frame)
configure()
}
required init?(coder: NSCoder) {
super.init(coder: coder)
configure()
}
private func configure() {
shapeLayer.fillColor = UIColor.white.cgColor
shapeLayer.strokeColor = UIColor.gray.cgColor
shapeLayer.lineWidth = 3.0
shapeLayer.lineCap = .round
shapeLayer.path = UIBezierPath(arcCenter: CGPoint(x: bounds.midX, y: bounds.midY), radius: bounds.width / 2 - shapeLayer.lineWidth / 2, startAngle: 0, endAngle: .pi * 2, clockwise: true).cgPath
layer.addSublayer(shapeLayer)
}
func startAnimating() {
let animation = CABasicAnimation(keyPath: "transform.rotation.z")
animation.fromValue = 0
animation.toValue = CGFloat.pi * 2
animation.duration = 1
animation.repeatCount = .infinity
shapeLayer.add(animation, forKey: "rotation")
}
func stopAnimating() {
shapeLayer.removeAnimation(forKey: "rotation")
}
}
```
在您的视图控制器中,可以像这样使用它:
```swift
let activityIndicator = CustomActivityIndicatorView(frame: CGRect(x: 0, y: 0, width: 50, height: 50))
activityIndicator.center = view.center
view.addSubview(activityIndicator)
activityIndicator.startAnimating()
// 在一段时间后停止动画
DispatchQueue.main.asyncAfter(deadline: .now() + 5.0) {
activityIndicator.stopAnimating()
}
```
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![aar](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![whl](https://img-home.csdnimg.cn/images/20210720083646.png)
![whl](https://img-home.csdnimg.cn/images/20210720083646.png)
![whl](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![whl](https://img-home.csdnimg.cn/images/20210720083646.png)