小编dav*_*eme的帖子

不接收场景相变

我正在尝试执行一些我之前放在我的应用程序委托中的代码,例如在进入后台时保存我的托管对象上下文。我将调用放入了.onChangeScenePhase,但我什么也没收到。这是一个示例项目:

import SwiftUI

@main
struct PhaseApp: App {
    @Environment(\.scenePhase) private var scenePhase
    
    var body: some Scene {
        WindowGroup {
            Text("Hello, world.")
        }
        .onChange(of: scenePhase) { phase in
            switch phase {
            case .active:
                print("Active")
            case .background:
                print("Background")
            case .inactive:
                print("Inactive")
            @unknown default: break
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

每当我按 Home 或点击应用程序时,我都希望在模拟器或我的测试设备上收到打印命令,但没有任何反应。

swiftui

14
推荐指数
3
解决办法
1692
查看次数

获取表情符号字符的描述

每个表情符号都有一个描述,你可以在Mac OS的??Space特殊字符选择器中看到.这里列出了它们.有没有办法让我在代码中查询这个描述(没有将它们全部输入到Struct中)?

我想做点什么:

let : Character = ""
let desc: String = .description
Run Code Online (Sandbox Code Playgroud)

desc决心"SMILING FACE WITH OPEN MOUTH AND SMILING EYES".

string character emoji swift

13
推荐指数
3
解决办法
2894
查看次数

使用 iOS 14 @main 时的托管控制器

我正在试验一个“纯”的 SwiftUI 应用程序。它没有,SceneDelegate所以我不确定在 iOS 上运行时我需要的 Hosting Controller 东西放在哪里。

以前在SceneDelegate我有代码会说这样的话:

let contentView = ContentView()
window.rootViewController = UIHostingController(rootView: contentView)
Run Code Online (Sandbox Code Playgroud)

现在我只有一个@main文件:

var body: some Scene {
    WindowGroup {
        ContentView()
    }
}
Run Code Online (Sandbox Code Playgroud)

那么 Hosting Controller 的东西去哪里了(或者我还能如何访问 SwiftUI 没有的 UIKit 功能?(具体来说,我想弄乱状态栏,自动隐藏主页指示器,以及一些关于亮/暗的事情) SwiftUIpreferredColorScheme不涵盖的模式。)

swiftui

9
推荐指数
3
解决办法
1234
查看次数

带箭头键的 SwiftUI 键盘快捷键

I\xe2\x80\x99m 在使用箭头键作为.keyboardShortcut。iOS 应用程序示例:

\n
struct ContentView: View {\n    @State var time: Date = Date()\n    \n    var body: some View {\n        VStack {\n            Button("Press Me") {\n                time = Date()\n            }\n            .keyboardShortcut(KeyEquivalent.rightArrow, modifiers: [])\n        \n            Text("\\(time)")\n        }\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

这会弹出一个按钮,按下该按钮会更改 中显示的时间text。我应该能够使用键盘上的右箭头键并使其正常工作,但它不能\xe2\x80\x99t。如果我改变keyboardShortcut行更改为:

\n
.keyboardShortcut(KeyEquivalent(\xe2\x80\x9ca\xe2\x80\x9d), modifiers: [])\n
Run Code Online (Sandbox Code Playgroud)\n

一切都按预期进行。您可以按 \xe2\x80\x9ca\xe2\x80\x9d 键,时间会发生变化。如果按住command键,您会看到系统提供的HUD,其中显示“\xe2\x80\x9ca”快捷方式。将其更改为.rightAarrow它会显示HUD,但其中\xe2\x80\x99s是一个封闭的\xe2\x80\ x9c?\xe2\x80\x9d 为快捷方式,按下箭头键时,快捷方式不会\xe2\x80\x99 触发。

\n

(我\xe2\x80\x99m知道我可以使用UIKit。试图理解为什么SwiftUI版本不能\xe2\x80\x99工作。)

\n

swiftui

9
推荐指数
1
解决办法
3214
查看次数

设置属性时,NSTextAttachment图像消失

我在将属性应用于NSMutableAttributedStrings时遇到问题.如果他们有图像附件,则在添加属性时图像会消失.

拿一个NSMutableAttributedString包含文本附件的内容,如下所示:

let myString = NSMutableAttributedString(string: "Hello\n\n")
let attachment = NSTextAttachment()
attachment.image = image    // some UIImage
let attachmentString = NSAttributedString(attachment: attachment)
myString.appendAttributedString(attachmentString)
Run Code Online (Sandbox Code Playgroud)

如果我尝试将属性应用于字符串,则会丢失附件:

let bodyFont = UIFont.preferredFontForTextStyle(UIFontTextStyleBody)
myString.setAttributes([NSFontAttributeName: bodyFont], 
                       range: NSMakeRange(0, myString.length))
Run Code Online (Sandbox Code Playgroud)

字符串现在显示为正确的字体但附件已消失.如果我制作范围myString.length - 1附件仍然存在,那么我可以用更多的工作(可能通过寻找NSTextAttachmentCharacter)踩到任何附件.我想知道是否有更简单的东西我不知道.

cocoa-touch swift

5
推荐指数
1
解决办法
532
查看次数

标签 统计

swiftui ×3

swift ×2

character ×1

cocoa-touch ×1

emoji ×1

string ×1