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

做go分析和kegg分析网站广州网站优化效果

做go分析和kegg分析网站,广州网站优化效果,盛世阳光-网站建设,做自己的网站logo概览 从 Xcode 15 开始#xff0c;苹果推出了新的 #Preview 宏预览机制#xff0c;它无论从语法还是灵活性上都远远超过之前的预览方式。#Preview 不但可以实时预览 SwiftUI 视图#xff0c;而且对 UIKit 的界面预览也是信手拈来。 想学习新 #Preview 预览的一些超实用调试… 概览 从 Xcode 15 开始苹果推出了新的 #Preview 宏预览机制它无论从语法还是灵活性上都远远超过之前的预览方式。#Preview 不但可以实时预览 SwiftUI 视图而且对 UIKit 的界面预览也是信手拈来。 想学习新 #Preview 预览的一些超实用调试小妙招吗那就“如意如意”随小伙伴们的心意吧 在本篇博文中您将学到如下内容 概览1. Xcode 15.0 新预览机制简介2. #Preview 让状态初始化如此轻松3. 为什么 #Preview 中不能直接嵌入可变状态4 #Preview Observable 宏构造可变 Binding 实参总结 相信学完本课后大家对于 Xcode 15 预览的使用以及 SwiftUI 界面调试会更加的轻车熟路 那还等什么呢让我们马上开始吧Let‘s preview 本文对应的视频课在此欢迎恣意观赏 Xcode 15.0新 #Preview 预览让调试悠然自得 1. Xcode 15.0 新预览机制简介 从 Xcode 15 开始苹果借助于 Swift 5.9 宏Macro的“东风”也为我们带来了全新的 #Preview 预览机制。你猜的没错它其实就是一个宏 如上所示我们将 #Preview 宏定义展开为了其原始代码的实现大家可以清楚的看到 #Preview 宏背地里到底做了些神马。 在 Xcode 15 之前小伙伴们需要使用遵循 PreviewProvider 协议的 Previews 结构来帮助我们预览指定的 SwiftUI 视图 struct LaunchView_Previews: PreviewProvider {static var previews: some View {LaunchView().environmentObject(Model())} }而现在只需一个 #Preview 即可搞定所有岂不呜呼快哉 #Preview {LaunchView().environmentObject(Model()) }为了方便起见我们还可以非常 nice 的将多个定制的 #Preview 预览内容混合在一起显示 如上所示为了便于观察我们在 #Preview 中指定了不同预览名称以及预览设备的方向和明暗主题等特性简直小菜一碟。 2. #Preview 让状态初始化如此轻松 “理想很骨感现实却很残酷”。 在实际开发中不可能所有视图都如此简单。在现实的 App 中视图多半都会与模型数据相绑定这意味着我们在预览它们之前需要创建对应的数据否则预览就不会达到预期效果显示将是一片“空空如也”。 比如在 SwiftUI 里我们有一个分类选择视图V2_ChallengeClassSelectView所有内置Built in的分类都是从数据库中读取的但前提是我们在数据库中已经初始化了这些分类这是通过调用如下方法来完成的 V2_ChallengeClassification.initializeData()所以我们可能会写出下面的代码以期待 #Preview 预览可以正常工作 available(iOS 17.0, *) #Preview {V2_ChallengeClassSelectView(selecting: .constant(nil)).onAppear {try? V2_ChallengeClassification.initializeData()} }不过可惜的是以上实现无法得偿所愿。原因是我们 V2_ChallengeClassSelectView 视图中的分类数据必须在其 body 显示之前就准备就绪 available(iOS 17.0, *) struct V2_ChallengeClassSelectView: View {Binding var selecting: V2_ChallengeClassification?let builtInClasses try? V2_ChallengeClassification.allBuiltInClassifications() }对于这种情况#Preview 宏有一个非常简单的解决方案我们只需在预览内容之前直接调用初始化代码即可 available(iOS 17.0, *) #Preview {try? V2_ChallengeClassification.initializeData()return V2_ChallengeClassSelectView(selecting: .constant(nil)) }运行可以看到我们已经能够在预览中正确显示初始化之后的所有内置分类了 3. 为什么 #Preview 中不能直接嵌入可变状态 大家可能已经发现了上面示例中的 V2_ChallengeClassSelectView 视图包含一个 selecting 绑定状态 struct V2_ChallengeClassSelectView: View { Binding var selecting: V2_ChallengeClassification? }但在我们的预览中为了“偷懒”实际向其传入的是一个绑定常量 V2_ChallengeClassSelectView(selecting: .constant(nil))这样做的后果是我们无法在预览中改变 selecting 属性的值也就无法观察到视图中选择所产生的变化了。 小伙伴们可能会觉得下面的实现可以帮我们摆脱这一问题 available(iOS 17.0, *) #Preview {State var selecting: V2_ChallengeClassification?try? V2_ChallengeClassification.initializeData()return V2_ChallengeClassSelectView(selecting: $selecting)}遗憾的是这样做“然并卵”毫无用处 其原因是与 Xcode 15 之前的旧预览机制类似嵌入在预览结构中的简单状态实际上是无法被改变的即使它被 State 等可变限定符所修饰时也是如此。 那么我们如何解决呢 答案很简单将可变状态放到 #Preview 外面去 4 #Preview Observable 宏构造可变 Binding 实参 从 Xcode 15 Swift 5.9开始苹果推出了新的 Observable 宏帮我们便捷的创建可观察对象。 更多关于 Observable 宏以及 Observation 框架的详细介绍小伙伴们可以移步到下面的博文中进一步观赏 Swift 5.9 与 SwiftUI 5.0 中新 Observation 框架应用之深入浅出Swift 5.9 新 Observable 对象在 SwiftUI 使用中的陷阱与解决 简单来说我们可以在 #Preview 之外利用 Observable 宏包裹我们的可变状态从而可以将其通过绑定传入到对应的视图中去 available(iOS 17.0, *) Observable class PreviewModel {var selecting: V2_ChallengeClassification? }available(iOS 17.0, *) #Preview {State var model PreviewModel()try? V2_ChallengeClassification.initializeData()return V2_ChallengeClassSelectView(selecting: $model.selecting) }注意在上面的代码示例中我们实际向 V2_ChallengeClassSelectView 视图传递的绑定是 Observable 可观察对象 model 中的属性。虽然 model 作为 State 放在了预览内部不过由于它是一个可观察对象所以它仍然可以变化自如。 编译运行修改后的代码我们现在可以在 #Preview 预览界面中顺畅自如的测试 selecting 分类属性改变时的显示逻辑了 至此我们通过上面几个小“栗子”对 Xcode 15 中新的 #Preview 预览机制又有了更深刻的领悟小伙伴们还不赶快给自己点一个大大的赞吧 想要系统学习 Swift 语言的小伙伴们千万不要错过我的《Swift 语言开发精讲》专栏哦 Swift 语言开发精讲 总结 在本篇博文中我们介绍了 Xcode 15 中新的 #Preview 预览机制并讨论了如何利用 #Preview Observable 宏让 SwiftUI 界面调试更加“如虎添翼”。 感谢观赏再会啦
http://www.w-s-a.com/news/560262/

相关文章:

  • 怎样创建网站信息平台网络推广官网首页
  • 网站建设的课程网站 逻辑结构
  • 开通企业网站搬瓦工暗转wordpress
  • 成都网站建设有名的公司怎么做出有品牌感的网站
  • 中国网站的建设淘宝数据网站开发
  • 深圳建站网站模板wordpress 文章最长
  • 服务器建立网站建网站做seo
  • 帮人做彩票网站支付接口网上请人做软件的网站
  • 万全网站建设wl17581做旅游广告在哪个网站做效果好
  • 钢城网站建设安徽省住房和城乡建设厅网站
  • 协会网站建设方案大良营销网站建设好么
  • 网站引导页一般是什么格式网页设计师的应聘岗位
  • 构建网站空间网站开发与维护招聘
  • 网站建设的网页怎么做番禺网站开发哪家强
  • 网站开发是程序员吗百度网盘下载电脑版官方下载
  • 中国电力建设集团网站杭州网站运营
  • 大气网站模板下载效果好的网站建设公
  • 住房和城乡建设部网站打不开重庆市建设工程信息网官网30系统
  • 做美食软件视频网站大数据精准营销策略
  • 网站后台密码错误陕西大型网站建设
  • 网站建站中关键字搜索怎么弄wordpress 后台插件无法访问
  • 做减肥餐的网站网站优化注意事项
  • 做网站做推广有效果吗专门做淘宝优惠券的网站
  • 菜谱网站开发系统ps做网页效果图
  • 徐州品牌网站建设wordpress多重筛选页面
  • 网站改版提示无需改版个人怎么申请微信小程序
  • 电子商务网站建设的简要任务执行书可以注册免费网站
  • 公司网站设计需要什么豪爵铃木摩托车官网
  • 建收费网站合肥地区网站制作
  • 自己做头像网站小网站建设公司