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

庆幸果断放弃了SwiftUI:它还不够成熟

并且 SwiftUI 可以“实现一次编码,可适应五端 Apple 产品平台”, 包括watchOS、tvOS、macOS 等,以此统一苹果平台 UI 框架。...考虑到配套创作工具 CiderKit 在发展成熟过程也变得愈发复杂,再加上创建各种窗口和 UI 元素实际需求,决定尝试用用 SwiftUI。...这是个宝贵机会,能让认真体验一把 SwiftUI 并探索其内部工作原理。 起初项目工作良好,SwiftUI 表现可以说非常满意,甚至创建了自己修改器,以便更轻松显示警报消息。...这可以说是压死骆驼最后一根稻草了,决定放弃 SwiftUI,继续用 AppKit。 总    结 其实没能在项目中用到 SwiftUI,会让感觉有点遗憾。...但我至少可以更好控制应用程序行为,而且根据需求随意调整各种元素。 总之,经历了这么一番波折,还是很庆幸自己果断放弃了 SwiftUI。这可能是在这个项目上做过最明智选择。

4.8K20

SwiftUI 状态管理系统指南

SwiftUI没有使用委托、数据源或任何其他在UIKit和AppKit等命令式框架中常见状态管理模式,而是配备了一些属性包装器[1],使我们能够准确声明我们数据如何被我们视图观察、渲染和改变。...属性状态 由于SwiftUI主要是一个UI框架(尽管它也开始获得用于定义更高层次结构(如应用程序和场景)API),其声明式设计不一定需要影响应用程序整个模型和数据层——而只是直接绑定到我们各种视图状态...: SwiftUI视图不是对正在屏幕上渲染实际UI组件引用,而是描述我们UI轻量级值——因此它们没有像UIView实例那样生命周期。...小结 SwiftUI管理状态方式绝对是该框架最有趣方面之一,它可能需要我们稍微重新思考数据在应用传递方式——至少在涉及到将被我们UI直接消费和修改数据时是这样。...希望这篇指南能成为一个很好方式来概述SwiftUI各种状态处理机制,尽管一些更具体API被遗漏了,这篇文章强调概念应该涵盖了所有基于SwiftUI状态处理绝大多数用例。

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

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

快速检索数组元素Q:为什么没有简单方法将 TABLE 选择行映射到提供表内容数组元素上?似乎唯一方法是在数组搜索匹配 id 值,这对于大表来说似乎效率很低。...在两种方案,如果在数据量很大情况下,更倾向于第一种方式,这样可以按需求读取数据。...A:你可以使用 dismissSearch 环境属性以编程方式取消搜索字段。目前还没有 API 可以程序化将焦点转至搜索字段。...目前 SwiftUI 没有 API 可以限制用户在字段输入字符。很希望苹果能够继续扩展基于 FormatStyle 解决方案,让其可以实时对输入内容进行校验。...Too complex to type checkQ:在 iOS 14 SwiftUI 遇到一个问题,试图有条件显示 3 个符合 Shape 协议对象一个。

14.7K30

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

这有点笨拙,不认为有两个文本框是正确做法。另外,按照这种方法,@FocusState 变量会变得没有反应,而且它不能被设置为 nil( 返回到以前视图并没有移除键盘 )。...例如,在你模型,有多个路径,每个标签都有一个,但在 split view ,只投射其中一个路径细节。...使用一个共同底层数据源,并将其投射到 UI 需求上,这样就可以对该模型进行单元测试,以确保常规和紧凑投影是一致。...对来说,这似乎是一个完全合理实现。如果你遇到了性能问题或者希望大幅扩展你所绘制图片数量,可以试一下 .drawingGroup 和 Canvas APIs ,它们都可以用于更密集绘制。...从父视图通过环境值进行传递应该可以满足提问者当前需求:父视图可以传入新值,当前视图也可以在视图范围内改变该值。总结忽略掉了没有获得结论问题。希望上述整理能够对你有所帮助。

12.1K20

SwiftUI 布局:如何自定义 AlignmentGuides

然而,当您处理在不同视图之间分割视图时,这些方法都不能很好工作——如果您必须使在用户界面完全不同两个视图部分对齐。...为了解决这个问题,SwiftUI 允许我们创建自定义对齐辅助线,并在整个 UI 视图中使用这些辅助线。在这些视图之前或之后发生什么并不重要,它们仍然会排成一条线。...AlignmentID协议只有一个要求,即一致性类型必须提供一个静态defaultValue(in:)方法,该方法接受ViewDimensions对象并返回一个CGFloat,指定如果视图没有alignmentGuide...现在,提到使用枚举比使用结构体更可取,原因如下: 我们刚刚创建了一个名为MidAccountAndName新结构体,这意味着我们可以(如果需要的话)创建该结构体实例,即使这样做没有任何意义,因为它没有任何功能...建议您尝试在我们示例前后添加更多文本视图 –SwiftUI 将重新定位所有内容,以确保我们对齐两个视图保持不变。

96910

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

为什么会使那么惊喜? 我们都知道前端工作离不开适配,虽然之前Apple Xib一些设计适配起来很方便了。但是在pad或者tv上还是要写不同代码去做在不同平台运行。...用户喜欢苹果生态系统所有方面,比如控件和特定于平台体验,都可以在代码很好地表现出来。SwiftUI是真正本地应用程序, ?...SwiftUI是什么 ---- SwiftUI是一种创新、非常简单方法,可以利用Swift强大功能在所有苹果平台上构建用户界面。使用一组工具和api为任何苹果设备构建用户界面。...自动支持动态类型、暗模式、本地化和可访问性意味着您第一行SwiftUI代码已经是您编写过最强大UI代码。 ?...SwiftUI语法是什么样呢 ---- SwiftUI使用声明性语法,因此您可以简单声明用户界面应该做什么。例如,您可以编写一个包含文本字段项列表,然后描述每个字段对齐方式、字体和颜色。

2.3K30

TCA - SwiftUI 救星?(一)

四年多前写过一篇关于使用单向数据流来架构 View Controller[2] 文章,因为 UIKit 没有强制 view 刷新流程,所以包括绑定数据在内很多事情都需要自己动手,这为大规模使用造成了不小障碍...而最近随着公司项目彻底抛弃 iOS 13,也终于可以更多正式在工作中用上 SwiftUI 了。 Apple 并没有像在 UIKit 贯彻 MVC 那样,为 SwiftUI ”钦定“ 一个架构。...> inout State 让我们可以“原地”对 state 进行变更,而不需要明确返回它。...你得到经验可以很容易迁移到其他 UI 平台 (甚至 web app) 中去。 练习 为了巩固,也准备了一些练习。完成后项目将会作为下一篇文章起始代码使用。...如果你没有跟随代码部分完成这个示例,你可以在这里[11]找到这次练习初始代码。参考实现可以在这里[12]找到。

3.2K30

Swift 热重载

包括: 重新启动它(或将其部署到设备) 导航到您在应用程序先前位置 重新生成您需要数据。 如果您只需要做一次的话,听起来还不错。...早在 2014 年推出时,很多人都对 Swift Playgrounds 感到敬畏,因为它们允许我们快速迭代并查看代码结果,但它们并不能很好工作,因为它存在崩溃、挂起等问题。...工作流 SwiftUI 只需要两行字就可以使任何 SwiftUI 启用实时编程,而当您这样做时,您将拥有比使用 Swift Previews 更快工作流程,同时能够使用实际生产数据。...当我最初开始咨询 TBC 时,想要第一件事是将 Inject 和 XcodeInjection 集成到我工作流程。公司管理层非常支持。...如果您切换到我 TCA 分支(我们保持最新),你可以UI 和 TCA 层上使用 Inject 。 它有多可靠? 没有什么是完美的,但我已经使用它十多年了。

1.9K20

Android 工程师开发 iOS 是怎样体验?

Hello 各位朋友好久不见,好久没有更新公众号了,为什么没有更新,是因为最近一段时间都在写 iOS 应用,终于在前几天完成了自己第一个 iOS 产品开发工作,大概在明年一月初时候这个 App... iOS 开发最早使用是 Swift4,印象升级 Swift5 时候几乎没有改动,目前 API 已经趋向稳定,所以如果你想要尝试 iOS 开发的话,Swift 是首选开发语言。...虽然很喜欢声明式 UI,但写了这么久 SwiftUI 它目前缺陷也很明显,SwiftUI没有完全实现原有 UIKit 全部功能,如果 SwiftUI 没法实现,就需要自定义一个 UIKit...所以我观点是,iOS 开发如果是简单页面可以SwiftUI 实现,复杂就用 UIKit 吧,毕竟万一 SwiftUI 不支持,那绝对会坑死你。...以上就是最近开发 iOS 感受,完全出自我主观感受,有不同意见可以留言分享,之后推送除了有关 Android 、 Kotlin 相关之外也会继续分享其他所感兴趣事物,最后,感谢你关注!

1.7K30

SwiftUI属性包装器如何处理结构体

已经了解了 SwiftUI 如何通过使用 @State 属性包装器将变化数据存储在结构体,如何使用 $ 将状态绑定到UI控件值,以及更改 @state 包装属性时是如何自动让 SwiftUI 重新调用我们结构体...为了了解这里发生事情,希望您考虑一下我们在使用 Core Data 时:我们使用 @FetchRequest 属性包装器查询我们数据,但我还向您展示了如何直接使用 FetchRequest 结构体...,以便我们可以更好控制它是如何创建。...您将进入 SwiftUI 生成界面,该界面实质上是 SwiftUI 向我们展示所有的部分。那里没有实现代码,只有协议,结构体,修饰符等许多定义。...在后台,它将值发送给SwiftUI以便存储在可以自由修改位置,因此,结构体本身永不改变。

1.7K10

Swift 属性包装器

属性属性 属性包装器也可以有自己属性,并且支持进一步定制,甚至可以将依赖项注入到包装器类型。...然而,通过在通用属性包装器实现这种逻辑,我们可以使其易于重用——因为这样做可以让我们简单将包装器附加到任何希望由UserDefaults支持属性。...,如果后端数据缺少标志,使我们应用程序返回其默认值: if let value = try container.decodeIfPresent(Value.self, forKey:...但是,有时我们实际上可能希望访问属性包装器本身,而不是其包装值。在使用AppleSwiftUI框架构建UI时,这种情况尤为常见,该框架大量使用属性包装器来实现其各种数据绑定API。...即使在诸如SwiftUI这样声明性框架之外,属性包装器也有大量潜在用例,其中许多不需要我们对整体代码进行任何大更改——因为属性包装器大部分都是完全透明运行。

2.6K30

老人新兵 —— 一款 iOS APP 开发手记

尤其在之后开发过程,随着理解深入,越发感受到了它魅力所在。在实现 app UI 有了一定技术基础情况下,便开始了关于 i 数据库方面的选择。很早前使用过关系型数据库,因此还算有点基础。...SwiftUI 给我创建了一个非常高效环境,在短时间内便可以将整个 app 原型跑起来,但当真正将具体实现以及数据流完全串联起来时才发现一切并不那么简单。...目前这个 bug 还没有解决,为了不让用户体验出现问题( 只是偶尔出现,但也很烦人 ),暂时屏蔽了 app 从屏幕左侧滑动返回功能。...模拟器 NavigationLink 只能使用一次,第二次点会失效,实机没有问题。很难实现直接返回到根视图,通过 dissmiss 只能返回到上层视图。...在 Xcode 11 beta 版本可以采用一些非常规手段实现这一功能,不过目前已被屏蔽了。导致无法很好实现双击 TabView 图标返回该 Tab 根视图,比较郁闷。

2.5K40

声明式 UIKit 在有赞美业实践

现在开源一些第三方库其实已经有很好解决。比如:ComponentKit,Yoga,AsynDisplayKit等,都是基于布局设计。...SwiftUI 由于 iOS 13 限制,以及生态不完善,也还没达到我们在项目中能直接上手使用程度,前期版本迭代也会因为其不稳定等因素可能会出现 API 大改。...通过布局和普通视图声明,可以高效绘制是目标UI。...代码和数据操作将天然分离,State 最小状态管理节点,可基于 Redux 等状态管理模式统一管理,也可以分散各自 ViewController 进行分离式管理。...为了解决这个问题,在样式上处理上,我们导入了 Style 概念,和 CSS 一样,Style 是对样式描述,调用方可以任意组合 Style,把样式和从 UI 代码抽离,能够很好减少自定义 view

1.4K30

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

而对于开发者来说,新发布 SwiftUI 可能是最吸引人特性,在 苹果公司软件工程高级副总裁Craig Federighi演示,我们可以轻松把一百行前端代码缩减到十几行。...初体验:左边加大括号21行,右边出现一些类似SB东西,布局UI,设置属性貌似都可以完成 // SwiftUI 特点是什么 // SwiftUI 使用声明式语法,所以我们可以简单声明用户界面的样式。...// 为什么需要 SwiftUI // 下面是来自王巍对UIKit诟病 UIKit 提供是一套符合直觉,基于控制流命令式编程方式。...这带来和巨大 side effect 以及大量状态,如果没有妥善安置,它们将在 View Controller 混杂在一起,同时作用于 view 或者逻辑,从而使状态管理愈发复杂,甚至不可维护。...的确,我们平时开发很多时间都浪费在了这个方面,然而作为牛逼也相信必然会一统江湖 Swift 也是不忍心让开发人员掉入这样SwiftUI 只是一个开始---打开新世界开始 // 声明式语法

3K40

全新Swift从入门到进阶实战探探iOS APP

这种方法有助于平衡正向测试和负向测试数量,从而提高检测缺陷能力。持续集成和持续部署(CI/CD) :虽然原始证据没有直接提到,但在实践,结合CI/CD工具可以进一步提高TDD效率。...文本输入密集型应用:同样,考虑到SwiftUI在处理多个填充文本字段方面的高效性18,它可以被广泛应用于需要用户频繁输入文本应用程序。...游戏开发:虽然证据没有直接提到游戏开发,但考虑到SwiftUI性能优势和对动态界面的支持,它可以被用于开发各种类型游戏,从简单休闲游戏到复杂策略游戏。...在开发iOS应用程序时,有效使用Swift和UIKit框架进行用户界面设计(UI设计)是提高开发效率和产品质量关键。我们可以总结出一些策略和建议。...通过将应用逻辑、数据处理和用户界面分离,开发者可以更专注于UI设计,同时确保应用其他方面也能高效运行。

18610

WWDC 23 ,SwiftUI 5 和 SwiftData 初印象

WWDC 2023 正在如火如荼进行。苹果不仅带来了全新形态硬件产品,还推出了几个相当震撼新框架。本文将聊聊对本届 WWDC SwiftUI 5.0 和 SwiftData 初步印象。...这从根本上解决了当前影响 SwiftUI 应用( 过渡计算 )效率问题。让开发者可以更加自由来设计数据结构以及随心所欲注入数据源。 不过很遗憾,这项新特性只能在 SwiftUI 5 上实现。...与之前预判一样,在数据存储领域,苹果不会贸然另起炉灶,创建一套全新逻辑。...这是目前整理一些有关 SwiftData 问题和注意事项( 原文发表在推文中,没有进行更系统归纳): 尚不支持公共和共享数据云同步 在当前版本,通过其他上下文(ModelContext)创建数据并不会自动合并到视图上下文中...转换为 SwiftData 代码,但目前问题还不少,当有多个选项,或属性类型为 transformable ,无法很好应对 Model 原来设置 Index,目前无法转换(可生成对应代码,但 Attributed

34210

从用SwiftUI搭建项目说起

Apple SwiftUI SwiftUI ---- 在进入项目搭建先说说自己对SwiftUI一个基本认知: SwiftUI觉得对iOSer来说最大是开发UI模式优化...,针对一个需求或者是一个新项目我们基本上都是从写UI开始,根据设计图再编造一些假数据来做,只是在写过程及时效果也都是脑补!...SwiftUI觉得能改变痛点就是这点,能让我们实时预览自己写UI效果,保持我们代码和界面的同步性!...声明式UI:关于它理解往细了说,的确能专门写一篇文章出来,下面这篇文章能很好帮助理解我们现在使用命令式和SwiftUI采用声明式UI之间区别。...View ---- 自己觉得,要想从UIKit转换到SwiftUI,需要我们最先转变概念就是 Controller -> View 一个改变,在使用SiwftUI写UI过程,基本上是不在需要我们向

4.4K20

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

而对于开发者来说,新发布 SwiftUI 可能是最吸引人特性,在 苹果公司软件工程高级副总裁Craig Federighi演示,我们可以轻松把一百行前端代码缩减到十几行。...下面来一张牛逼哄哄SwiftUI效果图,给大家打打牙祭 [1240] 初体验:左边加大括号21行,右边出现一些类似SB东西,布局UI,设置属性貌似都可以完成 SwiftUI 特点是什么 SwiftUI...为什么需要 SwiftUI 下面是来自王巍对UIKit诟病 UIKit 提供是一套符合直觉,基于控制流命令式编程方式。...这带来和巨大 side effect 以及大量状态,如果没有妥善安置,它们将在 View Controller 混杂在一起,同时作用于 view 或者逻辑,从而使状态管理愈发复杂,甚至不可维护。...的确,我们平时开发很多时间都浪费在了这个方面,然而作为牛逼也相信必然会一统江湖 Swift 也是不忍心让开发人员掉入这样SwiftUI 只是一个开始---打开新世界开始 声明式语法

2.3K30

WWDC 23 ,SwiftUI 5 和 SwiftData 初印象

WWDC 2023 正在如火如荼进行。苹果不仅带来了全新形态硬件产品,还推出了几个相当震撼新框架。本文将聊聊对本届 WWDC SwiftUI 5.0 和 SwiftData 初步印象。...这从根本上解决了当前影响 SwiftUI 应用( 过渡计算 )效率问题。让开发者可以更加自由来设计数据结构以及随心所欲注入数据源。 不过很遗憾,这项新特性只能在 SwiftUI 5 上实现。...与之前预判一样,在数据存储领域,苹果不会贸然另起炉灶,创建一套全新逻辑。...这是目前整理一些有关 SwiftData 问题和注意事项( 原文发表在推文中,没有进行更系统归纳): 尚不支持公共和共享数据云同步 在当前版本,通过其他上下文(ModelContext)创建数据并不会自动合并到视图上下文中...转换为 SwiftData 代码,但目前问题还不少,当有多个选项,或属性类型为 transformable ,无法很好应对 Model 原来设置 Index,目前无法转换(可生成对应代码,但 Attributed

1.1K20
领券