【发布时间】:2020-08-26 16:43:24
【问题描述】:
【问题讨论】:
-
您使用什么 SDK 和部署目标?它仅在 SwiftUI 2.0 / macOS 11 中可用。
-
xCode:版本 11.6,MacOs:10.15.4
标签: swift macos swiftui loader
【问题讨论】:
标签: swift macos swiftui loader
此 ProgressView 仅适用于 MacOs 11,您可以在此链接中看到 https://developer.apple.com/documentation/swiftui/progressview
您可以使用NSProgressIndicator 并将其包装成NSViewRepresentable,如下所示:
import Swift
import SwiftUI
public struct ActivityIndicator {
public enum Style {
case medium
case large
}
private var isAnimated: Bool = true
private var style: Style? = Style.medium
public init() {
}
}
#if os(macOS)
import Cocoa
import AppKit
extension ActivityIndicator: NSViewRepresentable {
public typealias Context = NSViewRepresentableContext<Self>
public typealias NSViewType = NSProgressIndicator
public func makeNSView(context: Context) -> NSViewType {
let nsView = NSProgressIndicator()
nsView.isIndeterminate = true
nsView.style = .spinning
nsView.sizeToFit()
nsView.layer?.transform = CATransform3DMakeScale(1.0, 0.6, 0.0);
nsView.controlSize = .small
return nsView
}
public func updateNSView(_ nsView: NSViewType, context: Context) {
isAnimated ? nsView.startAnimation(self) : nsView.stopAnimation(self)
}
}
#endif
【讨论】: