首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ViewBuilder 研究(上)—— 掌握 Result builders

为什么复杂 SwiftUI 视图容易 Xcode 上卡死或出现编译超时 为什么会出现 “Extra arguments” 错误提示(仅能在同一层次放置有限数量视图) 为什么要谨慎使用 AnyView...通过对函数语句应用构建器进行转译,result builders 提供了 Swift 创建新领域特定语言( DSL )能力(为了保留原始代码动态语义,Swift 有意地限制了这些构建器能力)...一个结果构建器提供了 buildArray(_:) 实现后,转译后函数可以使用 for...in 语句。...构建器转译时,将递归地应用上述规则。 或许大家会奇怪, buildEither 实现如此简单,并没有太大意义。 result builders 提案过程也有不少人有这个疑问。...这种情况 SwiftUI 很常见,例如某些 View 或 modifier 仅支持较新平台,我们需要为不支持平台提供其他内容。

3K20
您找到你想要的搜索结果了吗?
是的
没有找到

百行代码变十行,苹果SwiftUI可视化编程让开发者惊呼完美

Swift 是苹果于 2014 年发布全新开发语言,可与 Objective-C* 共同运行于 macOS 和 iOS 平台,用于搭建基于苹果平台应用程序。...SwiftUI 可以需要时候自动计算并渲染。 ? 设计工具 Xcode 11 内建了非常直观新设计工具,我们可以通过 SwiftUI 使用拖放等简单操作构建界面。...Xcode 会立即重新编译你修改,并将它们插入到 APP 运行版。因此整个开发预览可视化与代码可编辑性能同时支持并交互。 ?...这些视觉编辑器代码编辑器也能用,所以我们可以使用检查器挖掘每个控件不同选项,即使界面的手动编程部分也是一样。我们可以从库拖拽控件,再放入到设计面板或代码面板都是可以。...预览能在任何设备上以任何朝向展示我们 UI。

4K10

SwiftUI 中用 Text 实现图文混排

一个和一组 SwiftUI ,Text 是使用频率最高几个组件之一,几乎所有的文字显示操作均由其完成。随着 SwiftUI 版本不断提升,Text 功能也得到持续地增强。...另一方面,由于 Image( 非 SF Symbols ) textBaseline 默认情况下是与其 bottom 一致,这导致与 Text 其他文字进行混排时,图片与文字会由于基准线不同发生上下错位情况...支持动态类型应用程序也会为使用者提供一个更一致阅读体验。用户可以控制中心或通过【设置】—【辅助功能】—【显示与文字大小】—【更大字体】来更改单个或全部应用程序文字显示大小。...DynamicType从 Xcode 14 开始,开发者可以预览快速检查视图不同动态类型下表现。Text("欢迎访问 \(logo) !")...从上图中可以看出,动态类型仅对文本有效,Text 图片尺寸并不会发生改变。使用 Text 实现图文混排时,如果图片不能伴随文本尺寸变化变化,就会出现上图中结果。

4.2K30

Markdown 系统介绍和使用技巧

………… 粗体和斜体 粗体:使用两个 * 包围(推荐使用_) 斜体:使用一个 * 包围(推荐使用_) 示例: **粗体** *斜体* 段落和换行 换行技巧:在行尾加 2 个空格,然后回车即可换行...优雅段落决定文章美观,阅读体验,建议遵循以下段落规范: 每行超过 80 字符 一句话结束语(。...超链接区分以下几种类型: 文字链接 引用链接 网络链接 (已经不需要 来包围了) 文字链接就是让文字可以跳转链接,如下: [文字](地址) 效果:点我访问百度 引用链接是通过 变量引用 方式来增加文字链接可读性一种方法...使用正确驼峰英文:正例:macOS, 反例:MACOS Markdown 比较简单,掌握以上技巧基本上可以游刃有余使用 Markdown 了。... VSCode 技巧 Markdown 预览快捷键:shift + command + v 增强预览插件:Markdown Preview Enhanced MPE 插件 全称:Markdown

1.6K20

Xcode 11 初体验

其中说明一下:SwiftUI 预览 系统最低要求macOS 10.15 Add Editor 提供了编辑窗口任意切割功能 可以指定文件打开位置。...指定文件打开位置 上面我们介绍了窗口分割, Xcode 11 ,你还可以按住 Option + Shift,然后左边点击要打开文件,这时会出现窗口选择提示 你可以用键盘,或者鼠标任意方式选择你要打开这个文件窗口...可以方便使用浏览所有SF符号 苹果内部还是提供了很多方便,比如下图,你可以根据关键字搜索出你需要图标 同时你放到相应界面上面,你还可以进行调整!...你现在可以点击调试配置界面,动态改变模拟器运行参数,比如这里改变主题模式到黑色,改变文字大小,更改辅助选项等等: 这样增强我们开发人员调试能力,对于每次编码再调整方式大大优化!...这样做有两个好处: 首先可以提高预览结果呈现速度 其次应用进入后台时,不会做一些额外操作,只会做一些必要操作,使应用快速进入睡眠状态,以节省耗电.

3.1K10

苹果全新UI框架来了!可视化编程,自动化减少20%代码量

来源:Github等 编辑:鹏飞 本文转自公众号:新智元 【导读】SwiftUI是为Apple平台创建用户界面的现代化框架,以前所未有的速度创建漂亮、动态应用程序。...这意味着编写代码时候,我们说出需要东西,不需要考虑如何实现 自动化:这意味着我们以前必须手工完成许多事情,现在可以SwiftUI自动完成 组合:构建小模块,然后通过将这些小功能模块组合起来完成更复杂任务...SwiftUI通过4种方式,解决了上述问题: 用一个新声明式UI结构,定义了布局外观和工作方式 更新UI预览会自动生成新Swift代码,反之,更改Swift代码也会更新UI预览 Swift任何绑定例如有效...使用SwiftUI之前要注意事情 首先,SwiftUI目前只支持10.15 beta以及更新macOS系统,当然10.15 beta已经是目前最新了。 其次一些可能出现小问题也是需要注意。...比如,它只支持Swift,你不能在Obj-C里使用SwiftUISwiftUI目前还不是很成熟,正在从事iOS开发程序员可能更应该继续使用Obj-C,直到SwiftUI足够成熟。

5.3K20

干货 | 关于SwiftUI,看这一篇就够了

一、背景 苹果于2019年度WWDC全球开发者大会上,发布了基于Swift建立声明式框架--SwiftUI,其可以用于watchOS、tvOS、macOS等苹果旗下产品应用开发,统一了苹果平台UI...目前想要体验SwiftUI,需要以下准备:Xcode 11 beta和macOS Mojave or Higher,如果想要体验实时预览和完整Xcode 11功能,需要macOS 10.15 beta...作为SwiftUI新特点之一,FunctionBuilder倾向于目前流行编程方式,开发者能够使用基于DSL架构,像SwiftUI不用去考虑具体实现细节,因为构建器实现就是一个DSL本身。...Xcode 11提供了实时预览和静态预览两项功能,实时预览:代码修改能够实时呈现在Xcode预览窗口中;此外,Xcdoe还提供了快捷功能,通过command+鼠标点击组件,可以快速、方便地添加组件和设置组件属性...SwiftUI; 虽然SwiftUI优点很多,但是其使用门槛很高,只能在iOS 13以上系统使用;仅这点,很多公司和开发者望而却步,目前主流应用最低支持iOS 9,至少3年之内,SwiftUI只能作为一个理论知识储备

5.7K10

Ask Apple 2022 与 SwiftUI 有关问答(上)

SwiftUI 4.0 ,contextMenu 功能获得了不小提高。例如一个上下文菜单可以有多个选项、支持 primaryAction、以及可定制预览视图。...创建与 IM 应用类似的底部文字输入栏Q:你好,我问题是关于 TextField 。...是否关于如何使用多个场景指导或例子?或者大多数应用程序只需要一个 WindowGroup ?A:多场景对于建立复杂应用程序是很有用,特别是 macOS 上。...场景内容视图定义了场景创建窗口中视图内容,但场景本身定义了应用程序整体结构。SwiftUI 4.0 ,WindowGroup 获得了相当大更新,真正具备了开发 macOS 应用能力。...DocumentGroupQ: macOS使用 SwiftUI 应用生命周期和 DocumentGroup 时,如果应用仅为数据阅读器,是否可以禁止创建新文件?

12.2K20

肘子 Swift 周报 #027 | 苹果助你成为一日“百万富翁”

近期推荐 SwiftLog 和 OSLog:选择、使用以及坑[6] 王巍 (onevcat)[7] 日志工具对开发者至关重要,它们调试和维护上线应用扮演着提供即时且精确信息角色。...重构结果令 Ryan 非常满意,尽管应用包大小有所增加,但构建性能和 SwiftUI 预览方面均获得了显著提升。他希望这篇文章能为其他开发者进行类似重构时提供启示和帮助。...本文中,Alexander 介绍了如何解决使用 Xcode 预览时常见问题,并建立一个有效预览环境。...Jordan Morgan 本文中详细介绍了使用 CKSyncEngine 来简化数据同步步骤和技术,使得开发者可以更容易地实现复杂应用数据同步。...通过使用 HandVector,开发者可以还未获取实体设备情况下,对其应用进行全面测试,从而加速应用开发和上市进程。

9310

打造可适配多平台 SwiftUI 应用

100% 基于 SwiftUI 开发,目前支持三个平台: iPhone、iPad 和 macOS使用可以通过它来浏览电影信息,包括正在上映以及即将上映影片。... iPad 使用可以调整应用窗口尺寸。...这种做法不仅可以解决跨平台兼容性问题,还有其他好处:可以改善视图中代码整洁度(减少条件编译语句使用可以改善 SwiftUI 不同版本之间兼容性当然,要创建并使用这类代码,前提是开发者必须已经对...这样就失去了多窗口存在意义。图片为什么会出现这种情况呢?我们都知道 SwiftUI 是一个声明式框架。...“电影猎手”应用层面的大多数状态是由 @AppStorage 来管理另外一些全局状态,则是通过 Core Data 来进行维护。

3K80

Ask Apple 2022 与 SwiftUI 有关问答(下)

虽然 Form 和 List iOS 上看起来差不多,但如果你看一下 macOS,就会发现它们之间不少差异。与 macOS List 相比,许多控件 Form 外观和行为都有所不同。...自定义布局Q:我经常想根据列表中最长或最短文字来布置各种小组件。鉴于动态文本大小应用程序运行时可能会发生变化,衡量给定字体文本大小最佳方法是什么?A:你好!我们新布局协议支持这个功能。... SwiftUI 4 可以使用 .scrollContentBackground(.hidden) 隐藏列表默认背景searchableQ:是否有办法.searchable() 修饰器以编程方式设置搜索字段焦点...因为这些使用并不有害,我们希望开发者因为使用了新编译器版本处理一堆警告。...A:我们没能在 iOS 16.0.3 上重现你说问题,你是否可以提供相关代码段方便我们重现问题和调查?

14.7K30

如何在Xcode下预览含有Core Data元素SwiftUI视图

结合两年来我SwiftUI使用Core Data经验和教训,我们将在本文中探讨: •导致SwiftUI预览崩溃部分原因•如何在之后开发避免类似的崩溃出现•如何在Xcode安全可靠地预览含有...预览Xcode工作原理同标准模拟器十分接近。但为了让它可以即时响应SwiftUI视图变化,苹果对其做出了不少修改。...如果说标准模拟器可以涵盖真实设备90%功能,那么用于预览模拟器可能只能提供50%设备拟真度。 用于预览模拟器同样使用沙盒机制,具有同标准设备(或模拟器)一致目录结构。...因此,通常推荐视图中直接获取或操作Core Data数据(非常简单应用除外)。...直接使用托管对象 当然,我们仍然可以直接给视图传递托管对象。为了便于预览重复使用,我们可以CoreDataStack或其他你认为合适地方提前创建好用于预览数据,预览时直接调用即可。

5.1K10

打造可适配多平台 SwiftUI 应用

100% 基于 SwiftUI 开发,目前支持三个平台: iPhone、iPad 和 macOS使用可以通过它来浏览电影信息,包括正在上映以及即将上映影片。... iPad 使用可以调整应用窗口尺寸。...这种做法不仅可以解决跨平台兼容性问题,还有其他好处: 可以改善视图中代码整洁度(减少条件编译语句使用可以改善 SwiftUI 不同版本之间兼容性 当然,要创建并使用这类代码,前提是开发者必须已经对... SwiftUI ,只要理解了状态、声明和响应之间关系,开发者就可以用任何想用形式来组织数据。无论是将状态进行统一管理,还是分散不同视图中,都有各自优势和意义。...“电影猎手”应用层面的大多数状态是由 @AppStorage 来管理另外一些全局状态,则是通过 Core Data 来进行维护。

1.9K10

SwiftUI - 百行代码变十行,Swift再创辉煌

原文作者:Cooci_和谐学习_不急躁 苹果开发者大会 WWDC 2019 北京时间今天凌晨开幕。...而对于开发者来说,新发布 SwiftUI 可能是最吸引人特性, 苹果公司软件工程高级副总裁Craig Federighi演示,我们可以轻松地把一百行前端代码缩减到十几行。...初体验:左边加大括号21行,右边出现一些类似SB东西,布局UI,设置属性貌似都可以完成 // SwiftUI 特点是什么 // SwiftUI 使用声明式语法,所以我们可以简单地声明用户界面的样式。...// 拥有更直观新设计工具 // Xcode 11 包含更直观新设计工具,可让开发者通过拖拽方式使用 SwiftUI 构建界面,在这过程可以直接设置控件相关属性。...当在设计工具工作时,所编辑内容会立刻反映到代码上,如果从模拟器切换到手机,手机也能立马看到预览效果。 ?

3K40

WWDC - SwiftUI - 初恋般感觉

创建和组合视图 本篇文章将通过一个构建应用(Landmarks,一个可以发现、分享你喜欢地点App)示例,来引导大家进行SwiftUI开发。...你可以通过Xcode新实时反馈功能,来优化你视图布局 。 第一节 创建一个使用SwiftUI新Xcode项目。浏览画布、预览SwiftUI模板代码。...要在Xcode预览画布上视图并与之交互,请确保您Mac运行macOS 10.15 beta版。 macOS 10.15 beta版下载地址 Xcode 11下载地址 ?...你可以MapKitMKMapView类来展示渲染地图界面。 SwiftUI使用UIView或者其子类,你需要让你view遵循UIViewRepresentable协议。...第四步 点击Live Preview来预览效果。 预览状态下,你可以继续编写view代码,Live Preview会实时更新视图。 第五步 将CircleImage添加到stack上面。

3.8K10

SwiftUI 视图中打开 URL 若干方法

本文范例代码是 Swift Playgrounds 4.1 ( macOS 版本 )完成,可在 此处下载[2]。...此时 Button ,我们可以直接通过 openURL 来完成 SwiftUI 1.0 版本通过调用其他框架 API 才能完成工作。...通过 AttributedString 为不同位置文字设置不同属性,从而实现在 Text 打开 URL 功能。...开发者可以通过使用 NSDataDetector + AttributedString 组合,从而实现类似系统信息、邮件、微信 app 那样,对文字不同类型内容进行自动识别,并设置对应 URL...NSDataDetector[5] 是 NSRegularExpression 子类,它可以检测自然语言文本半结构化信息,如日期、地址、链接、电话号码、交通信息等内容,它被广泛应用于苹果提供各种系统应用

7.6K31

SwiftUI WWDC作为开发者我最激动部分

为什么会使我那么惊喜? 我们都知道前端工作离不开适配,虽然之前Apple Xib一些设计适配起来很方便了。但是pad或者tv上还是要写不同代码去做在不同平台运行。...用户喜欢苹果生态系统所有方面,比如控件和特定于平台体验,都可以代码很好地表现出来。SwiftUI是真正本地应用程序, ?...SwiftUI是什么 ---- SwiftUI是一种创新、非常简单方法,可以利用Swift强大功能在所有苹果平台上构建用户界面。使用一组工具和api为任何苹果设备构建用户界面。...SwiftUI语法是什么样呢 ---- SwiftUI使用声明性语法,因此您可以简单地声明用户界面应该做什么。例如,您可以编写一个包含文本字段项列表,然后描述每个字段对齐方式、字体和颜色。...当您在设计画布工作时,您编辑所有内容都与相邻编辑器代码完全同步。当您键入时,代码作为预览立即可见,并且您对该预览所做任何更改都会立即出现在您代码

2.3K30

苹果WWDC:让人想花钱!Mac Pro“硬”到尖叫,iPadOs系统独立,四大升级系统“软”出惊喜

· 声音更加智能 声音智能方面,Apple Pods升级最为明显,如果你在运动状态不便使用手机却必须回复信息的话,那么恭喜你,Siri可以帮你语音读出信息并将你说内容进行文字回复,精确度提升很多。...· AR 这应该是此次更新中最好玩了。 RealityKit摄影级真实渲染及Xcode加持,让iOS 13AR体验变得更加简单。...简单来说,iPadOS,图片可跨应用便捷分享;两个MS Word 程序可以排排坐;直接拖拽光标就可选中所需文字段落,三指手指即可控制复制、粘贴和删除。...ONE MORE THING · 底层框架SwiftUI 该框架可为更上层UI框架提供支持。开发者可以直接在UI框架调整外观修饰,并预览应用外观。...同样基于Swift语言,Xcode应用SwiftUI还可获得更具互动性开发体验。

1K20

从用SwiftUI搭建项目说起

这两张图相信看过苹果官方SwiftUI介绍文档并且跟着写了一遍代码同学应该陌生,当然我们目的不是说这两篇代码,这个具体可以到下面连接去查看,我自己跟着写了一遍之后对SwiftUI也是有了一个基本认识...搭建这样一个场景构建一个基本应用,包括登录和数据处理以及iOS常见控件SwiftUI一些具体使用,这个项目会随着学习进度慢慢把所有的内容都基本补齐,下面是最基本导航+标签git效果。...View ---- 我自己觉得,要想从UIKit转换到SwiftUI,需要我们最先转变概念就是 Controller -> View 一个改变,使用SiwftUI写UI过程,基本上是不在需要我们向...UIKit我们导航、标签都是通过控制器来管理,但是SwiftUI他们分别是通过NavigationView+TabView管理,我们得认识上有一个基本转变,从Controller到View...@State变量使用,具体我们会在后面的代码,关于这个@State我项目Demo中有具体解释,包括像@bind类型或者是@EnvironmentObject这些关键字我们肯定是得需要学习

4.4K20
领券