Swift ui macos ProgressView 使用未解析的标识符'ProgressView'

Posted

技术标签:

【中文标题】Swift ui macos ProgressView 使用未解析的标识符\'ProgressView\'【英文标题】:Swift ui macos ProgressView Use of unresolved identifier 'ProgressView'Swift ui macos ProgressView 使用未解析的标识符'ProgressView' 【发布时间】:2020-08-26 16:43:24 【问题描述】:

我正在尝试在 macOS 项目中添加 ProgressView,但它给了我以下错误,在互联网上查找我找不到任何解决方案。

谁能帮帮我?

【问题讨论】:

您使用什么 SDK 和部署目标?它仅在 SwiftUI 2.0 / macOS 11 中可用。 xCode:版本 11.6,MacOs:10.15.4 【参考方案1】:

此 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

【讨论】:

以上是关于Swift ui macos ProgressView 使用未解析的标识符'ProgressView'的主要内容,如果未能解决你的问题,请参考以下文章

Swift UI 实时预览画布不适用于 macOS Catalina 和 Xcode 11.0

Swift ui macOS 在特定 url 上打开一个新的 google chrome 窗口隐身

Swift UI笔记

Swift UI 和画布编辑器

让 SwiftUI 应用出现在 macOS Dock 中

macOS 上的 swift: AVAudioPlayer 立即停止