用自定义 Layout 化解 SwiftUI List 的行高与间距跳变
动画的声明式表达是 SwiftUI 的核心优势之一。但在某些场景里,结果并不总像我们期待的那样平滑。一个典型例子是:当 `List` 行内的内容高度发生动态变化——副标题从空变为非空、文本因更新而导致行数变化——系统自带的布局引擎往往无法给出连续的过渡动画。本文从这个现象出发,逐层拆解原因,给出一种完全基于 SwiftUI 原生能力的解决方案;也借这条路径回看 SwiftUI 在布局机制层面的几个关键约束。
动画的声明式表达是 SwiftUI 的核心优势之一。但在某些场景里,结果并不总像我们期待的那样平滑。一个典型例子是:当 `List` 行内的内容高度发生动态变化——副标题从空变为非空、文本因更新而导致行数变化——系统自带的布局引擎往往无法给出连续的过渡动画。本文从这个现象出发,逐层拆解原因,给出一种完全基于 SwiftUI 原生能力的解决方案;也借这条路径回看 SwiftUI 在布局机制层面的几个关键约束。
在上一篇文章中,我聊了聊 Core Data 在当下项目中的一些现实处境。在本文中,我将介绍我的一个实验性项目 Core Data Evolution,探索能不能让 Core Data 在现代 Swift 项目中以一种更自然的方式继续存在下去?
Core Data 在 2026 年仍有大量存量项目,但它与现代 Swift 的并发模型、类型安全和代码表达之间的错位越来越明显。本文梳理三个核心问题,并思考在不放弃 Core Data 的前提下实现现代化改造的可能。
当同一段与并发有关的代码在 Xcode 16 中无法通过,却能在 Xcode 26 中顺利编译时,你第一时间会想到什么?我最初的判断是编译器进化了,但现实并没有这么简单。本文将记录我最近遇到的一次有意思的排查过程:从测试失败出发,一步步追到 Core Data 的 SDK interface,最终发现,问题的关键并不完全在 Swift 编译器本身,而在 NSManagedObjectContext 被导入 Swift 的方式已经发生了变化。
出乎意料,Xcode 26.3 版本中苹果直接提供了对 Claude Code/Codex 的支持。自此,开发者终于可以在 Xcode 中优雅地使用原生 AI Agent 了。 这两天我针对新版本进行了一系列尝试,包括配置 MCP、以及编写自适应的 `CLAUDE.md`。本文将以 Claude Code 为例,分享一些文档之外的技巧。
视频正在取代文字成为主流的表达方式,而好工具是创作的加速器。macOS 录屏软件 ScreenSage Pro 的独立开发者 Sintone 分享了从像素抓取到元数据重现的全过程。从屏幕录制、元数据捕获,到高性能视频合成,他详述了开发中的挑战与解决方案。
Swift 6 为并发引入了许多新功能与关键字。虽然其中不少内容在日常开发中可能鲜少用到,但一旦遭遇特定场景,若对这些新概念缺乏了解,即便有 AI 辅助也可能陷入僵局。本文将通过一个在开发测试中遇到的实际并发问题,来介绍如何利用 **`@isolated(any)`** 以及 **`#isolation`** 宏,实现函数的隔离域继承,从而让编译器自动推断闭包的运行环境。
tvOS 绝非 iPad 的放大版。本文是 Syncnext 播放器的工程实录,深入解析 Apple TV 开发的真实陷阱:从 Focus 焦点机制、严苛的存储限制,到 SwiftUI 填坑与 AVPlayer 深度调优,助开发者在 tvOS 平台上“活下来”