当前位置: 首页 > news >正文

网站制作完成中卫网红大型蹦床设备

网站制作完成,中卫网红大型蹦床设备,网站主机类型,动态图形设计本文我们要在visionOS内实现一个标题输出的动画效果。主要讲​​ViewModifier​​​协议#xff0c;修饰符#xff08;modifier#xff09;应用于视图或另一个视图修饰符#xff0c;生成原值的另一个版本。在希望创建一个可应用于不同视图的修饰符时可实现​​ViewModifier…本文我们要在visionOS内实现一个标题输出的动画效果。主要讲​​ViewModifier​​​协议修饰符modifier应用于视图或另一个视图修饰符生成原值的另一个版本。在希望创建一个可应用于不同视图的修饰符时可实现​​ViewModifier​​协议。 首先定义​​ViewModel​​本例中的模型比较简单仅定了三个变量分别表示当前文本、标题输出是否完成以及最终的标题文本。 import SwiftUIObservable class ViewModel {var titleText: String var isTitleFinished: Bool falsevar finalTitle: String 第三回 托内兄如海荐西宾 接外孙贾母惜孤女 } 因模型中有默认值且需要在程序运行的过程中进行修改所以在入口文件中需要将模型注入到环境中 import SwiftUImain struct visionOSDemoApp: App {State private var model ViewModel()var body: some Scene {WindowGroup() {ContentView().environment(model)}} } 接下来就是本文的重点了我们需要自定义一个文本修饰符。虽然可以直接将修饰符应用于视图但更常见和地道的做法是使用修饰符来定义一个​​View​​来包装这个视图修饰符。我们在代码里就是这么做的在视图中我们传入了5个变量​​text​​和​​isFinished​​是需要进行修改的所以使用了​​Binding​​​​cursor​​定义了光标默认使用了常见的​​|​​​​isAnimated​​表示是否显示动画。 在​​TypeTextModifier​​中可以看到如果​​isAnimated​​为​​false​​就直接显示最终文本。而在任务中有两个​​for​​循环分别设置初始的光标闪烁效果以及后续逐个文字和光标交替输出的效果最后等待片刻标记输出结束。 import SwiftUIextension View {func typeText(text: BindingString,finalText: String,isFinished: BindingBool,curor: String |,isAnimated: Bool true) - some View {self.modifier(TypeTextModifier(text: text,finalText: finalText,isFinished: isFinished,cursor: curor,isAnimated: isAnimated))} }private struct TypeTextModifier: ViewModifier {Binding var text: Stringvar finalText: StringBinding var isFinished: Boolvar cursor: Stringvar isAnimated: Boolfunc body(content: Content) - some View {content.onAppear {if isAnimated false {text finalTextisFinished true}}.task {guard isAnimated else { return }// Blink the cursor a few timesfor _ in 1...2 {text cursortry? await Task.sleep(for: .milliseconds(500))text try? await Task.sleep(for: .milliseconds(200))}// Type out the titlefor index in finalText.indices {text String(finalText.prefix(through: index)) cursorlet milliseconds (1 UInt64.random(in: 0...1)) * 100try? await Task.sleep(for: .milliseconds(milliseconds))}// Wrap up the title sequencetry? await Task.sleep(for: .milliseconds(400))text finalTextisFinished true}} } ​​ContentView​​内容如下 struct ContentView: View {Environment(ViewModel.self) private var modelvar body: some View {Bindable var model modelNavigationStack {VStack {Spacer()VStack {Text(model.finalTitle).monospaced().font(.system(size: 50, weight: .bold)).padding(.horizontal, 40).hidden().overlay(alignment: .leading) {Text(model.titleText).monospaced().font(.system(size: 50, weight: .bold)).padding(.leading, 40)}Text(林黛玉进贾府).font(.title).padding(.top, 10).opacity(model.isTitleFinished ? 1 : 0)}Spacer()}.typeText(text: $model.titleText, finalText: model.finalTitle, isFinished: $model.isTitleFinished, isAnimated: !model.isTitleFinished)}} } 这里在屏幕中央输出两段文本第一段会以修饰符的动画效果进行输出直至结束第二段在第一段文本输出完成后显示。 示例代码​​GitHub仓库​​ 其它相关内容请见​​虚拟现实(VR)/增强现实(AR)visionOS开发学习笔记​​
http://www.sadfv.cn/news/435874/

相关文章:

  • 星巴克网站建设方案模板网站建设明细报价表
  • 购物便宜的网站有哪些12345网址大全
  • 知名的搜索引擎优化杭州seo推广排名稳定
  • 苏州企业网站建设专家邢台建手机网站流程
  • 建设蒙古语网站湘潭网站建设方案表格
  • 研磨 东莞网站建设wordpress title背景
  • 定制型网站建设服务点样用外网访问自己做的网站
  • 网站恢复正常织梦网站栏目对应首页
  • 余杭建设局网站珠海网站建设尚古道策略
  • 泰州模板开发建站网站建设中备案
  • 棋牌网站开发石景山企业网站建设
  • 福州网站开发定制网页设计实验报告总结
  • 优化网站费用华为网上商城手机官网
  • 咖啡网站设计模板石家庄哪里可以做网站
  • 网站建设课程基础专业做旅游网站
  • 湖南中维电力建设有限公司网站易网官方网站
  • edu域名网站国外开源代码网站
  • 成都建立网站个人工作室 网站建设
  • 厦门网站优化公司购物网站建设个人总结
  • 企业网站建设联系方式用dw制作个介绍家乡网站
  • 网站设计培训班创业农八师建设兵团社保网站
  • 做网站的注意什么问题山东济宁
  • 备案的网站名称可以改吗在线二维码制作
  • 地方网站做的好的任丘网站制作
  • 浙江省网站icp备案wordpress 插件_
  • 营销型网站的建设重点是什么意思搭建网站手机软件
  • 印度人通过什么网站做国际贸易微信公众号开发需要什么技术
  • 成都网站建设 招聘cms网站搭建好了再怎么做
  • 沈阳网站制作哪家好个人做外贸怎样起步
  • 免费看片网站企业官网手机版