Mac scenephase调研
Posted moooooonlight
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mac scenephase调研相关的知识,希望对你有一定的参考价值。
场景 | MacOs | IOS(iPhone 14 pro) |
---|---|---|
可见焦点 | active | active |
全屏 | active | NA |
可见非焦点自由窗口 | active | NA |
可见分屏窗口 | active | NA |
部分被遮挡 | active | NA |
完全被遮挡 | active | NA |
被放在第二个窗口 | active | NA |
锁屏 | 状态不变 | background |
登陆第二个用户桌面 | 状态不变 | NA |
最小化滑动操作过程 | NA | inactive |
多任务中心 | NA | inactive |
最小化 | inactive | background |
隐藏 | background | NA |
隐藏和最小化的区别在于:
- “隐藏”是 App 级别的操作,把当前 App 的所有窗口都收起来,而“最小化”,是窗口级别的操作,只把当前窗口收起来。
- 收入的位置也不同,“隐藏”会把 App 都收入 Dock 上的程序图标内,而“最小化”会把窗口放到 Dock 的最右边
background在MacOs和IOS上表现也有不同:
- MacOs的background的timer依旧在运行
- IOS的background的timer会停止
SwiftUI:onChange(of:scenePhase)没有触发
【中文标题】SwiftUI:onChange(of:scenePhase)没有触发【英文标题】:SwiftUI : onChange(of: scenePhase) is not firing 【发布时间】:2021-10-18 08:57:24 【问题描述】:我正在使用 SwiftUI 开发一个项目,但在接收应用程序进入前台和后台等事件时遇到问题。这些事件根本没有触发。请参考下面的代码。
import SwiftUI
@main
struct testApp: App
@Environment(\.scenePhase) private var scenePhase
var body: some Scene
WindowGroup
ContentView()
.onChange(of: scenePhase) phase in
if phase == .background
print("background")
if phase == .active
print("active")
if phase == .inactive
print("inactive")
import SwiftUI
struct ContentView: View
var body: some View
Text("Hello, world!").padding()
Xcode 版本为 12.5,在 iOS 14.0 - 14.5 模拟器上运行。我在 iOS 15 上试过,效果很好。这是 iOS 14 中的某种错误吗?
我对开发 iPhone 应用程序非常陌生。任何帮助将不胜感激。
【问题讨论】:
这是否回答了您的问题***.com/a/62840614/12299030? 感谢您的评论!我尝试了几乎所有可以在 Stack Overflow 上找到的解决方案,包括您刚刚发布的链接,但仍然没有运气......整天都在这个问题上...... 【参考方案1】:您可以将 .onReceive() 与您需要的通知发布者一起使用。
【讨论】:
以上是关于Mac scenephase调研的主要内容,如果未能解决你的问题,请参考以下文章