首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSAttributedString in watchOS和SwiftUI?

NSAttributedString in watchOS和SwiftUI?
EN

Stack Overflow用户
提问于 2022-01-27 03:37:59
回答 1查看 204关注 0票数 0

目标:在watchOS中使用SwiftUI的笔画文本

通过一个故事板项目,

WKInterfaceLabel通过setAttributedText提供了对NSAttributedString的支持,setAttributedText提供了对笔画文本的简单和简单的支持。

但是,在使用SwiftUI的新项目中,

在不存在的故事板之外,WKInterfaceLabel是不可用的:

不要自己创建该类的子类或实例。相反,在接口控制器类中定义出口,并将它们连接到故事板文件中的相应对象。

代码语言:javascript
复制
open class WKInterfaceLabel : WKInterfaceObject {

    
    open func setText(_ text: String?)

    open func setTextColor(_ color: UIColor?)

    
    open func setAttributedText(_ attributedText: NSAttributedString?)
}

‘'init()’不可用

那么,我们如何在NSAttributedString中使用watchOS和SwiftUI呢?

附带说明:

接下来,我预计新的AttributedString将可靠地取代NSAttributedString,但从watchOS 8和iOS 15开始,AttributedString就是破碎与残缺。这迫使我寻找一种解决方案,在watchOS和SwiftUI中使用SwiftUI。

EN

回答 1

Stack Overflow用户

发布于 2022-01-27 04:07:54

在最新的swiftUI中,您可以使用AttributedString而不是NSAttributedString

详细说明如何使用它,您可以在苹果文档中找到:https://developer.apple.com/documentation/foundation/attributedstring

但是,您仍然可以在NSAttributedString应用程序中使用swiftUI应用程序来包装原始NSTextField(macos) / UITextField(IOS)控件。

macos包装器的示例(必须很容易重写):

代码语言:javascript
复制
import SwiftUI
import Cocoa

@available(OSX 11.0, *)
public struct AttributedText: NSViewRepresentable {
    private let text: NSAttributedString
    private let selectable: Bool
    
    public init(attributedString: NSAttributedString, selectable: Bool = true) {
        self.text = attributedString
        self.selectable = selectable
    }
    
    public func makeNSView(context: Context) -> NSTextField {
        let textField = NSTextField(labelWithAttributedString: text)
        textField.preferredMaxLayoutWidth = textField.frame.width
        textField.allowsEditingTextAttributes = true // Fix of clear of styles on click
        
        textField.isSelectable = selectable
        
        return textField
    }
    
    public func updateNSView(_ textField: NSTextField, context: Context) {
        textField.attributedStringValue = text
    }
}

但在大多数情况下,对SwiftUI - AttributedString更好地使用本机方式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70873041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档