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

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

新框架使用声明性范例,让开发者用更少代码编写相同 UI。 SwiftUI 愿景是降低开发 iOS 门槛,吸引更多开发者、丰富 iOS 业态。...但每当 SwiftUI 更新检查器视图时(这种更新可能出现在移动过程,甚至是输入文本字段时候),渲染速率都会下降到每秒 10 到 15 帧,而且相当不稳定。这显然让人无法容忍。...但这会导致检查值出现延迟,因此地图编辑器交互过程(比如使用移动工具时)结果不准确,所以效果还是称不上完美。 但我觉得这可能只是个独立问题,并不能因此把 SwiftUI 一棒子打死。...但上图展示效果其实是 AppKit 完成,因为我 SwiftUI 一直实现不了预期功能。大家应该注意到了,中间 SpriteKit 视图上有三个按钮(分别是 +、200% 和 -)。...但继续使用 AppKit 最大优点,就是没有任何延迟而且一切功能完全符合预期。当然,整个构建过程更繁琐,而且自动布局功能也不怎么好用。

4.8K20

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

SwiftUI 4.0 Form Ventura 表现与以往版本有很大不同。形式更接近 iOS 状态,同时也对 mac 进行了更多适配。...我采用了常见解决方案,即旋转滚动视图和里面的每个单元格,以获得预期倒置列表, iOS ,这很有效。但在 macOS ,它使 CPU 使用率保持 100%。...其中 2 个是自定义形状( 基本是圆角矩形,只有两个角是圆 ),其中一个是矩形。编译器抛出一个错误,说它花了太多时间来检查视图类型。...这是一个多个版本中都出现过奇怪问题。 SwiftUI 早期版本,当在 iOS使用系统中文输入法时,很容易触发这种情况。但后期逐步得到了修复。...近期,聊天室我也看到了类似的讨论( 我本人尚未在 iOS 16 遇到 )。贴一个临时解决方案。

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

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

这种策略有助于Swift迅速成为世界最受欢迎编程语言之一11。...Swift实现测试驱动开发(TDD)最佳实践,首先需要理解TDD核心原则和步骤。我们可以总结出以下几点关键实践:编写失败自动化测试:开始编码之前,首先编写一个失败自动化测试14。...SwiftUI框架在iOS应用开发具体应用案例是什么?SwiftUI框架在iOS应用开发具体应用案例可以从其与UIKit框架比较得到一些启示。...游戏开发:虽然证据没有直接提到游戏开发,但考虑到SwiftUI性能优势和对动态界面的支持,它可以被用于开发各种类型游戏,从简单休闲游戏到复杂策略游戏。...iOS应用开发,提高Swift编程语言性能高级技巧可以从多个方面进行考虑。

19810

如何结合 Core Data 和 SwiftUI

core data stack SwiftUI 和 Core Data 之间相差将近十年 —— SwiftUI 随着 iOS 13 面世而 Core Data 则是 iPhoneOS 3 产物;...使用获取请求从 Core Data 检索信息——我们描述了我们想要内容,应如何对其进行排序以及是否应使用任何过滤器,然后 Core Data 会发回所有匹配数据。...我们所有的托管对象都位于托管对象上下文中,该上下文负责实际获取托管对象以及保存更改等。如果需要的话,您可以有许多托管对象上下文,但这距离现在还有一段路要走——实际,您可以长期使用它。...更好是,它已经将其添加到 SwiftUI 环境,这就是@FetchRequest属性包装器起作用原因——它使用了环境可用任何托管对象上下文。...这是一个引发函数调用,因为理论它可能会失败。实际,我们所做一切都没有失败可能,因此我们可以使用try?来调用它——–我们不在乎捕获错误。 因此,请将最后一行添加到按钮操作: try?

11.7K30

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

SwiftUI还提供对动态类型、暗黑模式、本地化和可访问性自动支持。 SwiftUI都更新了什么? 此次更新主要有5点: 声明式:更加易读代码。...而SwiftUI通过4种方式,解决了上述问题: 用一个新声明式UI结构,定义了布局外观和工作方式 更新UI预览会自动生成新Swift代码,反之,更改Swift代码也会更新UI预览 Swift任何绑定例如有效...outlets和操作,都会在编译时进行检查,因此在运行时不会出现UI失败风险 虽然背后使用来自UIKit和AppKit控件,但SwiftUI凌驾于二者之上,能够有效地使底层UI框架成为一个实现细节,...此前,无论什么尺寸屏幕iPad,总是很难将Interface Builder大小放到iOS。而拥有更简单,更快速,更安全SwiftUI为开发人员实现真正平台独立性迈出了一大步。...比如,它只支持Swift,你不能在Obj-C里使用SwiftUISwiftUI目前还不是很成熟,正在从事iOS开发程序员可能更应该继续使用Obj-C,直到SwiftUI足够成熟。

5.3K20

SwiftUI geometryGroup() 指南:从原理到实践

本文将介绍 geometryGroup() 概念、用法,以及低版本 SwiftUI 使用 geometryGroup() 情况下如何处理异常。...黄色圆形默认过渡效果是 opacity,创建黄色圆形时,SwiftUI 检查当前 transaction 并获取当前动画信息。...) 例如,较低版本 SwiftUI ,我们可以修改上面的示例一代码,以避免出现非预期行为: struct TopLeadingTest2: View { let show: Bool...对于 iOS 16,文字变化较多且较大情况下,应尽量避免父视图几何信息调整时切换文字内容。 总结 本文中,我们深入探讨了 SwiftUI geometryGroup() 重要性和实用性。...实际开发,尤其是面对复杂动画和布局场景时,理解并正确使用 geometryGroup() 是至关重要。 geometryGroup() 为我们提供了一个避免个别情况下出现布局异常能力。

23810

TCA - SwiftUI 救星?(一)

然后使用 TCA 实现一个最简单 View。 SwiftUI 很赞,但是… iOS 15 一声炮响,给开发们送来了全新版本 SwiftUI。...而最近随着公司项目彻底抛弃 iOS 13,我也终于可以更多地正式在工作中用上 SwiftUI 了。 Apple 并没有像在 UIKit 贯彻 MVC 那样,为 SwiftUI ”钦定“ 一个架构。...也就是说,我们需要相信 SwiftUI State -> View 过程是正确 (实际就算不正确,作为 SwiftUI 这个框架使用者来说,我们能做事情其实有限)。...在这个前提下,我们只需要检查 Action 发送是否正确,以及 Reducer 对 State 变更是否正确就行了。...但是,实际使用 TCA 做项目时,更多情景时我们从更小模块进行构建 (它会包含自己一套 Feature),然后再把这些本地内容”添加“到它上级。所以 Store 切分将会变得自然而然。

3.2K30

构建稳定预览视图 —— SwiftUI 预览工作原理

下面这段代码可以真机和模拟器运行,但会导致预览崩溃。...了解了问题所在,我们还可以使用其他两种方式来解决之前代码无法预览中使用问题。 方法一 将 Item 从 ContentView 移出来,放置到与 ContentView 同级代码位置。...预览工作流程 我们对上面的探索过程进行一个梳理,大致可以得到如下工作流程: Xcode 生成预览衍生代码文件 Xcode 编译整个项目,解析文件、获取预览视图实现、准备依赖其他资源 Xcode...预览并没有启动完整模拟器,因此某些代码无法预览实现预期行为,例如( 预览不存在应用程序生命周期事件 ): struct ContentView: View { var body:...开发者使用预览时需要清醒地认识到其局限性,并避免预览实现超出其能力范围功能。 接下来 本文中,我们探讨了 Xcode 预览功能实现原理,并指出其存在一定局限性。

43310

掌握 SwiftUI Safe Area

UIKit ,开发者需要利用 safeAreaInsets 或 safeAreaLayoutGuide ,才能确保将视图放置界面可见部分。 SwiftUI 对上述过程进行了彻底简化。...本文将探讨如何在 SwiftUI 获取 SafeAreaInsets、将视图绘制到安全区域之外、修改视图安全区域等内容。... SwiftUI ,开发者通常只有需要获取 StatusBar + NavBar 高度或 HomeIndeicator + TabBar 高度时才会使用到 safeAreaInsets 。...从 iOS 14 开始,SwiftUI 计算视图安全区域时,将软键盘在屏幕覆盖区域(iPadOS 下,将软键盘缩小后键盘覆盖区域将被忽略)也一并进行考虑。...该 Bug 已在 iOS 15.2 得到了修复。本文中代码, Xcode 13.2 beta (13C5066c) 之后版本都可以获得符合预期表现。

7.5K31

Swift 周报 第四十三期

这为宏提供了许多新用例,包括: 根据函数声明和一些元数据(例如自动合成传递提供参数远程过程调用)全面合成函数主体。 通过执行日志/跟踪、检查前置条件或建立不变量来增强函数主体。...讨论枚举案例类型签名/插值[7] 内容概括 讨论围绕获取具有关联值枚举情况字符串表示,特别是寻求一种为每种情况生成类型化签名或插值方法。一个示例枚举了具有关联值及其预期输出签名各种情况。...讨论解决了使用存在类型时期望与实际行为之间差异。值得注意是,当抽象具有预期行为(例如,meow()) Cat 等类型实例时,预期 Cat 所有实例都将统一表现出该行为。... SwiftUI 实战使用 MapKit API[14] 摘要: 这篇 Swift 博客介绍了 SwiftUI使用 MapKit 基础知识。...最新版本 SwiftUI 引入了新 MapKit 集成 API ,提供了更全面的功能。 文章示例了如何使用 Marker 和 Annotation 类型地图上放置标记和自定义视图。

19310

Swift 周报 第三十八期

正在审查提案 SE-0409[3] 导入声明使用访问级别修饰符 提案正在审查。 通过导入声明使用访问级别修饰符来声明依赖项可见性,可以强制规定哪些声明可以引用导入模块。...Swift论坛 讨论结构和类型(以前是匿名联合类型)[5] 从状态检查衍生出一个关于匿名联合类型主题新讨论线程:类型抛出。 关于这个主题衍生讨论是围绕这个评论开始。...表达式宏,通过详细且可操作故障信息验证测试预期条件。...讨论编写 TCP 客户端应用程序推荐方法是什么?[11] 我需要为 TCP/IP 自定义专有协议编写一个客户端。我希望它能够 macOS、iOS 和 Linux 使用。推荐方法是什么?...深入理解 Observation - 原理,back porting 和性能[15] 摘要: 喵神这篇文章讨论了 SwiftUI 状态管理,特别是引用类型状态管理,以及 Apple iOS

20530

WWDC 2022 音视频相关 Session 概览(EDR 相关)丨音视频工程示例

,以支持不同屏幕同时正确显示 SDR 和 HDR 内容。...1、 iOS 探索 EDR 参见:Explore EDR on iOS[1] 这个 Session 内容包含了下面几点: 1)介绍了 EDR API 新增特性 EDR API 开始支持 iOS...如下图所示,使用之前要检查当前设备是否可以支持 EDR metadata,然后去初始化对应格式 EDR metadata,最后将其应用到 CAMetalLayer 来渲染时,就用使用系统自带 Tone...不过,这里提到了可以获取到 EDR 图像内容几种途径,可以了解一下: 使用 TIFF、OpenEXR 等支持浮点数存储像素值图像格式来获取 EDR 图像; 通过 AVFoundation 从 HDR...和 AVPlayerLayer iOS 或 macOS 播放自己视图。

2.3K21

Swift 周报 第四十三期

这为宏提供了许多新用例,包括: 根据函数声明和一些元数据(例如自动合成传递提供参数远程过程调用)全面合成函数主体。 通过执行日志/跟踪、检查前置条件或建立不变量来增强函数主体。...讨论枚举案例类型签名/插值[7] 内容概括 讨论围绕获取具有关联值枚举情况字符串表示,特别是寻求一种为每种情况生成类型化签名或插值方法。一个示例枚举了具有关联值及其预期输出签名各种情况。...讨论解决了使用存在类型时期望与实际行为之间差异。值得注意是,当抽象具有预期行为(例如,meow()) Cat 等类型实例时,预期 Cat 所有实例都将统一表现出该行为。... SwiftUI 实战使用 MapKit API[14] 摘要: 这篇 Swift 博客介绍了 SwiftUI使用 MapKit 基础知识。...最新版本 SwiftUI 引入了新 MapKit 集成 API ,提供了更全面的功能。 文章示例了如何使用 Marker 和 Annotation 类型地图上放置标记和自定义视图。

19210

iOS14 致敬 Android 之 Meet Widget

Meet WidgetKit Widgets 可以显示你 App 相关内容,使用户可以快速访问您应用以获取更多详细信息;一个 iOS App 可以提供多种样式 Widget ,使用户可以专注于那些对自己最有价值信息...在你应用添加 Widget 将 Widget 添加到 App 需要进行少量设置,并且将使用 SwiftUI 来展示他内容。... Widget 显示内容 Widget 通常通过组合使用 SwiftUI 视图定义内容。... SwiftUI environment 设置相应系列和其他属性,例如配色方案(浅色或深色)。...用户终于不必再像过去那样进入应用程序内获取天气、新闻资讯、日期等信息,可直接通过主界面上添加不同应用、不同尺寸组件,关键信息就可直接在主屏幕一目了然,有点致敬安卓影子。

1.4K20

Ask Apple 2022 与 SwiftUI 有关问答(

该枚举类型切换。...阅读 SwiftUI 动画机制[8] 一文,了解更多有关动画内容。自适应高度 SheetQ:如何在 iOS16 呈现与动态内容高度相匹配 Sheet?...位置偏移方法与效率Q:非线性位置( 有 2 个轴 )渲染带有圆形图像最好方法是什么?...A:如果你 iOS 使用 UITextField 遇到性能问题,你可以尝试避免每个视图都是 UITextField ,默认渲染为 Text ,当文本被点击时动态切换为 UITextField 。...目前我做法是一个单例中保存对子上下文和托管对象引用,然后用一个 URL 打开一个新窗口,这个 URL 单例检查上下文和托管对象。如果我们能用自定义参数启动新窗口,那就更好了。

12.2K20

从org.springframework.dao.DuplicateKeyException说起

这样就知道了这个错误具体含义,比如104:唯一约束验证失败。这就是我们故意设置重复主键问题。...包下有sql-error-codes.xml文件,Spring启动时会自动读取这个文件错误码,它为我们预分类了一些错误码,而我们可以加强它,来使用我们自定义异常。...,这样Spring会发现它并使用我们自定义文件,配置定义如下: <bean id="HSQL" class="org.springframework.jdbc.support.SQLErrorCodes...Update时发生某些没有预料到<em>的</em>情况,例如更改超过<em>预期</em><em>的</em>记录数。...这将由ORM工具或用户<em>的</em>DAO实现抛出 TypemismatchDataAccessException Java<em>类型</em>和数据<em>类型</em>不匹配,例如试图把String<em>类型</em>插入到数据库<em>的</em>数值型字段<em>中</em> UncategorizedDataAccessException

2K40

苹果推出 SwiftData,可替代 SwiftUI Core Data

Core Data 通常是 Xcode 内集成 Schema Model 编辑器使用,由此生成 .xcdatamodeld 是真实之源,可被用于自动生成存根(stub)。...由于这层额外逻辑对开发者而言完全透明,SwiftData 得以将所有属性映射至其底层存储。据苹果公司称,持久性对象会在需要时从持久化存储获取并更新。...Bool、Int、String 等简单类型支持开箱可用,但更为复杂类型则必须要符合 Codable 协议,才能于持久化类中使用。 如上文所述,SwiftData 与 SwiftUI 相性很好。...SwiftData 还提供对谓词(Predicate)定义支持,可用于过滤数据。编译时对谓词进行检查,并对类型不匹配问题报编译错误。...为让开发者能更为轻松地迁移至 SwiftData,该框架支持现有 Core Data 应用逐步采用,苹果提供演示项目中展示了如何在一个 Core Data 应用仅部分使用 SwiftData

80230

自动化测试美团外卖实践与落地

值得一提是:AppiumiOS、Android和 Windows 测试套件之间可做一定程度复用代码。...4.8 埋点录制回放 除了功能测试,我们日常开发和测试工作,还会面临另外一个比较重要问题就是埋点测试。因此,我们自动化基础扩展出埋点自动化测试。...针对时机校验我们目前只支持: [1] 点击埋点上报时机校验,程序通过事件监听和埋点类型信息来判断点击埋点上报时机是否是点击操作下产生,如果不是则报错。...父任务保活机制:一个父任务会被拆分成N个子任务,当其中一个子任务S1节点保活机制和子任务保活机制下仍然执行失败之后,父任务保活机制会尝试将子任务S1未执行完毕用例转移到其他活跃状态子任务。...[6] 如果“人工校验”结果为一致,既上述所有判定都不准确,则需要人工对两张图中判定错误原因进行分类(具体类型待定),同时将断言存储到失败数据集。

1.1K10

解析SwiftUI布局细节(三)地图基本操作

(点击地图位置会获取经纬度,反地理编译得到具体位置信息,显示列表SwiftUI怎样使用UIKit控件 ---- 我们来总结一下,SwiftUI怎么使用UIKit控件,中间连接就是...第二个方法是我们用来更新UIKit控件方法 理解前面加我们提关联类型,那我们第一个方法返回对象类型就是你要使用UIKit类型,第二个方法更新View也就是我们UIKit控件。...首先有一点,SwiftUI我们创建View都是Struct类型,但手势事件是#selector(),本质还是OC东西,所以事件前面都是带有@Obic修饰符,但你要是Struct类型肯定是行不通...其实在我们使用UIKit时候如许多复用问题我们基本都是通过写数据再Model里面去解决SwiftUI 也不例外。...,回到给你就是一个元素是 CLLocation 类型数组,我们Demo只取了First,你拿到是经纬度,你要想获取这个经纬度具体位置信息就得经过反地理编码,拿到某某市区某某街道某某位置信息

2.1K10
领券