阿里云 建网站攻略哪些网站有中文域名
web/
2025/10/4 6:07:14/
文章来源:
阿里云 建网站攻略,哪些网站有中文域名,中山网站制作套餐,wordpress网站 800cdn文章目录 前言背景介绍平台支持仅支持watchOS支持watchOS和iOS 基本用法预定义样式根据触发器值选择样式使用场景当值更改时触发使用条件闭包触发使用反馈闭包触发 可以运行 Demo总结 前言
SwiftUI 引入了新的 sensoryFeedback 视图修饰符#xff0c;使我们能够在所有 Apple … 文章目录 前言背景介绍平台支持仅支持watchOS支持watchOS和iOS 基本用法预定义样式根据触发器值选择样式使用场景当值更改时触发使用条件闭包触发使用反馈闭包触发 可以运行 Demo总结 前言
SwiftUI 引入了新的 sensoryFeedback 视图修饰符使我们能够在所有 Apple 平台上播放触觉反馈。下面我们将学习如何使用 sensoryFeedback 修饰符在应用程序中的不同操作中提供触觉反馈。
背景介绍
在 iOS 17 之前如果你想要从 SwiftUI 视图中向用户提供触觉反馈你会使用其中一个 UIKit或 AppKit的反馈生成器。例如使用选择反馈生成器
struct ListView: View {Binding var store: Storelet generator UISelectionFeedbackGenerator()var body: some View {List(store.items, selection: $store.selection) { ... }.onChange(of: store.selection) { oldValue, newValue inif newValue ! nil {generator.selectionChanged()}}}
}在 iOS 17 中Apple 直接向 SwiftUI 中添加了一系列感觉反馈的视图修饰符以播放触觉和/或音频反馈。
平台支持
并非所有平台都支持所有反馈选项。以下是我所知道的每个平台上可用的内容列表。请注意iPad不支持触觉反馈。
仅支持watchOS
start活动开始stop活动停止
支持watchOS和iOS
decrease重要值减少到显着阈值以下increase重要值增加到显着阈值以上selectionUI元素的值正在更改success任务成功完成warning任务产生警告error任务产生错误impactUI元素碰撞时的物理冲击
请注意impact反馈有两个变体让您指定元素碰撞的重量轻中重或灵活性刚性柔软实心。在这两种情况下您还可以更改强度默认为1.0
// 默认impact反馈
.impact()// 具有柔韧性并增加强度的impact
.impact(flexibility: .rigid, intensity: 2.0)// 具有重量并增加强度的impact
.impact(weight: .heavy, intensity: 2.0)基本用法
要在 SwiftUI 视图中播放触觉反馈我们只需要使用 sensoryFeedback 视图修饰符带有两个参数。第一个定义了反馈样式第二个是触发器值。
struct ContentView: View {State private var store Store()var body: some View {NavigationStack {List(store.results, id: \.self) { result inText(result)}.searchable(text: $store.query).sensoryFeedback(.success, trigger: store.results)}}
}在上面的示例中我们使用 sensoryFeedback 视图修饰符带有成功样式。我们还将存储的 results 属性定义为触发器。这意味着 SwiftUI 将在存储的结果更改时播放成功样式的触觉反馈。
预定义样式
SwiftUI 提供了许多预定义的反馈样式如 success、warning、error、selection、increase、decrease、start、stop、alignment、levelChange、impact 等。
struct ContentView: View {State private var trigger falsevar body: some View {NavigationStack {Button(Action) {// 进行某些操作trigger.toggle()}.sensoryFeedback(.impact(weight: .heavy, intensity: 0.9),trigger: trigger)}}
}如上所示impact 样式允许我们调整反馈的权重和强度。请记住最好使用预定义的样式并在超级自定义的情况下自定义触觉反馈。
根据触发器值选择样式
sensoryFeedback 视图修饰符的另一种变体允许我们根据触发器值选择特定的反馈样式。在这里我们在存储包含结果时播放成功反馈并在结果为空时播放错误反馈。
struct ContentView: View {State private var store Store()var body: some View {NavigationStack {List(store.results, id: \.self) { result inText(result)}.searchable(text: $store.query).sensoryFeedback(trigger: store.results) { oldValue, newValue inreturn newValue.isEmpty ? .error : .success}}}
}SwiftUI 还提供了在触发器值上定义条件的选项决定是否播放预定义的反馈样式。
使用场景
这些感觉反馈修饰符都是基于触发器的。触发器需要是可等同的类型。有三种感觉反馈视图修饰符的变体
当值更改时触发
struct ListView: View {Binding var store: Storevar body: some View {List(store.items, selection: $store.selection) { ... }.sensoryFeedback(.selection, trigger: store.selection)}
}视图修饰符的第一个参数是 SensoryFeedback 类型。并非所有反馈类型都适用于所有平台。当触发器值更改时反馈会播放。
使用条件闭包触发
如果要更灵活地控制何时触发反馈请使用带有条件闭包版本的视图修饰符。例如仅在选择更改为非空值时播放选择反馈
.sensoryFeedback(.selection, trigger: store.selection) {oldValue, newValue innewValue ! nil
}条件闭包接收监视的触发器值的旧值和新值。在闭包中返回一个布尔值指示是否应播放反馈。
使用反馈闭包触发
要控制播放何种反馈请使用视图修饰符的反馈闭包版本。例如基于错误代码提供警告或错误反馈
// State private var errorCode: Int 0.sensoryFeedback(trigger: errorCode) { oldValue, newValue inswitch newValue {case 1: .warningcase 2: .errordefault: nil}
}在这种情况下在闭包中返回所需的反馈如果不想要任何反馈则返回nil。
可以运行 Demo
提供一个可以运行的 Demo完整代码如下
import SwiftUIstruct ContentView: View {State private var store Store()var body: some View {NavigationView {List(store.results, id: \.self) { result inText(result)}.searchable(text: $store.query).sensoryFeedback(.success, trigger: store.results).navigationTitle(Sensory Feedback Demo)}}
}struct Store {State var query: String State var results: [String] [Result 1, Result 2, Result 3]
}Demo 包括一个带有触觉反馈的 SwiftUI 列表。你可以根据需要进行进一步的调整和扩展。
总结
SwiftUI引入了新的sensoryFeedback视图修饰符为所有Apple平台提供触觉反馈。通过简单的附加我们可以定义反馈样式和触发器值实现了在应用程序中不同操作产生的触觉效果。支持多种预定义样式如success、warning、error以及个性化的impact样式。对于触发器值的处理也非常灵活可以根据其条件选择不同的反馈样式。
总体而言这个新的视图修饰符为提高应用的可访问性和用户体验提供了简便的方式。在使用时需谨慎避免过多干扰用户。希望通过学习这个新特性开发者能更好地运用触觉反馈功能提升应用的交互性。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/86632.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!