Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> iOS

Có thể thay đổi kích thước UIActivityIndicatorView trong Swift không?

Có thể thay đổi kích thước UIActivityIndicatorView bằng CGAffineTransform (scale), nhưng KHÔNG KHUYẾN KHÍCH vì làm mờ (blurry) indicator.

Cách làm (chỉ để tham khảo)


let indicator = UIActivityIndicatorView(style: .large)
indicator.color = .red
indicator.center = view.center
view.addSubview(indicator)
indicator.startAnimating()

// Scale 2.5x - LÀM MỜ
let transform = CGAffineTransform(scaleX: 2.5, y: 2.5)
indicator.transform = transform

Kết quả: Indicator bị mờ, không sắc nét.

Có thể thay đổi kích thước UIActivityIndicatorView trong Swift không?

Có thể thay đổi kích thước UIActivityIndicatorView trong Swift không?

Giải pháp đúng (Best Practice)

1. Dùng style built-in phù hợp


// iOS 13+
UIActivityIndicatorView(style: .large)      // 46pt
UIActivityIndicatorView(style: .medium)     // 36pt (mặc định)
UIActivityIndicatorView(style: .whiteLarge) // Large, màu trắng

2. Tự custom indicator (Crisp, không mờ)

Tạo class kế thừa UIView, vẽ spinner bằng CAShapeLayer + CABasicAnimation – vector, scale không bị mờ.

3. Dùng thư viện có indicator vector

  • NVActivityIndicatorView: 30+ animation type, vector-based, tùy chỉnh size/màu dễ dàng.
  • ProgressHUD: HUD + indicator vector.
  • SwiftUI ProgressView (iOS 14+): ProgressView().scaleEffect(2) – vector, không mờ.

Ví dụ NVActivityIndicatorView


let indicator = NVActivityIndicatorView(frame: CGRect(x: 0, y: 0, width: 80, height: 80),
    type: .circleStrokeSpin, color: .systemBlue, padding: 0)
indicator.center = view.center
view.addSubview(indicator)
indicator.startAnimating()

Kết luận: Không dùng transform.scale trên UIActivityIndicatorView. Chọn style size phù hợp hoặc dùng custom vector indicator/thư viện.