CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛
CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛
CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛

WWDC21-Day1,Day2SwiftUI主题摘要-源码交易平台丞旭猿

学而不思则罔,思而不学则殆。🤔

一直想写一篇一文搞懂 SwiftUI 数据流,结果忙着做项目搁置了很久,不知不觉 WWDC21 都已经来了。趁着学习新知识的时段,一并捡起这个没有做完的任务。这篇推文既作为预告,也是给自己催稿 🤣。

Apple WWDC21 第一天、第二天、第三天的 Session 视频官方都已经陆续放出。在写这篇文章时,我已经看第一天、第二天  SwiftUI 相关的几个 session。这里罗列一下要点,之后再抽空深入学习。读者们如果有对哪个主题感兴趣的,欢迎一起交流学习,可以给公众号后台留言。

对 SwiftUI 的工作机制感兴趣的读者推荐观看第三天的 “Demystify SwiftUI” session。

TimelineView

这是一个新的 View,在 “Whats new in watchOS 8” 和 “Whats new in SwiftUI” 两个 session 都有提到。简单来说,这是一个内建了时间线的视图,你可以用它来计划一些基于时间驱动的事务。计划时间的粒度可以是每帧,每分钟,每周期或者显式指定的时间点,分别对应了AnimationTimelineSchedule,EveryMinuteTimelineSchedule,PeriodicTimelineSchedule,ExplicitTimelineSchedule

提示:Beta 版本的开发者文档已经上线。根据我的体验,SwiftUI 的文档有改善,一些新的 API 不再是只有一句话的描述,还有 discussion 和用例。

一个很实用的新 API。实际上我之前开发沙漏记³app 时就涉及了一些于基于时间驱动的逻辑,SwiftUI 2.0 以前这些都要靠 Timer 来实现,现在可以换成TimelineView来做了。

PS:这个第一个版本只用了 72 小时完成开发和上线的 App 现在已经拥有了 1000+ 的用户 🍺🤣,抽空我也会分享一下自己的心得体会。

Region based notification

基于区域的通知(准确的说是基于 geofence),在 “Whats new in watchOS 8”  session 里有介绍。我还没尝试,不确定在国内好不好用。

Location Button

Region based notification 特性可以利用相关的 API 来标记地点。

Canvas

除了一开始就有的Shape,SwiftUI 又引入了比较接近 UIKit, AppKit 里的绘制方式。个人认为这应该算这个版本相对重量级的一组 API 了 👊(当然,如果只能挑一个 Big thing,我认为应当属 Swift 5.5)。因为有了这组 API,SwiftUI 的地盘可以往 graphics rich 的应用进一步延伸。”Whats new in watchOS 8″ , “Whats new in SwiftUI”,”Add rich graphics to your app” 三个 session 都有提到它。

注意:Canvas block 中的代码书写方式是命令式的。有 UIKit、AppKit  图形编程经验的读者应该会很熟悉。

更好的List

  • 异步 Image:AsyncImage

  • refreshablemodifier

  • taskmodifier

从名字上应该能猜到它们的作用。不过上面说的几个新 API 并不特定于List,只是 “Whats new in SwiftUI” 第一部分里先提到了。它们都基于 Swift 并发。

Swift 并发相关的一些语言特性,比如 async, await 关键字,都是由 Swift 5.5 引入的。Swift 5.5 引入了不少新特性,个人认为可以算一个大版本了,尤其是并发相关的细分特性很多。感兴趣的读者可以下载 Xcode 13 beta 提前体验。

  • listRowSeperator,listRowSeperatorTintColor,listStyle:这几个 modifier 让 List 的外观定制自由度更大了。

  • swipeActions:终于支持自定义的 swipe 动作了 🍻。

List之外的更多选择

TableTableColumn

表格也成为框架内建的一种视图类型啦。

@SetionedFetchReqeust

拉取的 CoreData 数据直接按属性分段,配合List或者Form分段组织数据。

“Whats new in SwiftUI” session 简单提了一下,”Bring Core Data concurrency to Swift and SwiftUI” 中也有涉及。

searchablemodifier

可以不用再自行包装 UISearchBar 了来实现搜索功能啦。

“Whats new in SwiftUI” session 中提到,”Craft search experience in SwiftUI” session 详细说明了用法,具体涉及@Environment((\.isSearching),Suggestionblock,onSumbitmodifier。

App 之间、多设备之间间共享数据

实现方式算很简洁了,涉及onDrag,preview,importsItemProviders,exportsItemProviders。有需要了解数据共享的读者可以重点关注一下。

SF Symbol 的变化

  • 新的渲染模式:hierarchy,palette

  • 新的内置颜色:针对主题和平台优化

  • 使用方式简化:可以基于上下文自动选择合适的 SF Symbol 变体(比如人机交互规范建议 TabView 里使用 SF Symbol 的 fill 变体。现在你只需要写基本的 Symbol  Name,SwiftUI 会自动帮你选择 fill 版本的变体。

相关的 session: “Whats new in SF Symbols”,  “SF Symbols in SwiftUI”

全局样式的改进

  • 新增了foregroundStylemodifier

  • background现在可以应用Material,基本上对应 UIKit 的几种不同程度的毛玻璃效果。想要任意位置的毛玻璃背景终于可以不用再引入一个额外的 UIView 了。

按照官方说法,浅色/深色外观,SF Symbol,内置颜色集合,foregroundStyle, Material 这些都是完美配合的。也就说,它们相互之间都根据对方的选项调配了相应的选项。

文本和键盘的改进

  • Text支持 Markdown 了👏。

你可以实现自定义的 attribute, 相关知识点:MarkdownDecodableAttributedStringKey

相关 session: “Whats new in Foundation”

  • dynmaicTypeSize:可以用来约束动态字体的尺寸范围

  • textSelection:这个 modifier 可以用来允许用户选中文本,iOS 和 watchOS 也可以用哦。Rich information 的 App 应该用得上。

Text,TextField现在支持了更多内建的格式化操作

很遗憾,没提到TextEditor。估计文本控件的能力跟 UIKit 还有一些差距。想要开发 Text rich 的应用,估计还得回到 UIKit。

新增的 keyboard API

  • onSubmit,submitLabel

这两个还没细看,键盘收起的问题能不能先解决了?

键盘的 accessory view 里现在也能放置工具按钮了,通过指定ToolbarItemplacementToolbarItemPlacement.keyboard来实现

@FocusState切换焦点

相关 session: Direct and reflect focus in SwiftUI

这个新 API  在表单交互和 tvOS 上应该会用到。

按钮的 API 改进

  • 新的buttonStyle

  • controlSize:控制按钮的尺寸

  • controlProminence:控制按钮的凸显模式

  • keyboardShortcut:按钮对应的默认快捷键

  • 按钮的role属性

  • 按钮的动作确认:confirmationDialog

  • Menu,menuStyle(.button),menuIndicator(.hidden),primaryAction

总的来说,按钮在样式方面提供了更多的设定接口,但参数几乎都是枚举,十分简便。我想这也是为了让按钮在各种场景下更符合 Apple 的人机交互规范。

一些其他 API

  • privacySensitivemodifier,可以让隐式敏感的内容在 Widget、表盘上动态地切换有效视图和占位视图。

  • 各种辅助功能的改进(相关 session: “SwiftUI Accessibility”)

Preview 专门给 Accessibility 新增了一组属性编辑界面。Apple 对于辅助功能的重视,我个人是很赞赏的。

  • safeAreaInset

    我想 Apple 一定是注意到了这个细节:不少 App 应该都有这样一种交互场景。一个可滚动视图+底部菜单,要求滚动视图在向下滚动时能够延伸到底部菜单之下,底部菜单一般是采用毛玻璃效果。而这在有safeAreaInset之前,你得用一段跟底部菜单等高的占位视图把滚动视图顶开才能实现。

总结:今年是 SwiftUI 发布的第三个年头,虽然很多 API 的功能跟 UIKit / AppKit 这些发展了十多年的框架还有差距,但从 Canvas API 就可以看出,SwiftUI 未来的目标应该是全面取代原有的框架。

封面来自https://developer.apple.com/news/?id=wsatejun

声明:本文部分素材转载自互联网,如有侵权立即删除 。

© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏 分享
相关推荐
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容