返回

文章详情

Ember,一个围绕可访问性构建的原生 iOS Hacker News 阅读器

Hacker News2026年6月20日 17:00

一个原生的 iOS Hacker News 阅读器——冷静、快速,并为每个人构建。Ember 是一个 SwiftUI 应用,按照原生 iOS 应用应有的方式阅读 Hacker News:原生渲染的线程评论、个性化的首次运行设置、完整的深色模式,以及将可访问性视为一项功能,而非事后才考虑的东西。 亮点 每个 Feed——热门、新、最佳、问答 HN、展示 HN 和招聘,可以从固定的过滤条中切换。 原生评论线程——Hacker News 的评论 HTML 被解析为可点击链接、斜体、块引用和代码块的原生文本。 线程可以折叠并带有深度指标,整个树形结构在单个请求中加载。 智能入门——一个简短的首次运行流程,读取设备的外观和可访问性设置,预先配置应用以匹配,并在选择主题、强调和主页 Feed 时显示实时预览。 搜索——根据相关性或最近性进行的全文本搜索。 稍后保存——书签任何故事;保存的故事存储在设备上并可离线使用。 阅读跟踪——访问过的故事变暗,这样你可以从离开的地方继续。 应用内阅读——在应用内 Safari 视图中打开链接,并提供可选的阅读模式,或转交给默认浏览器。 个人资料——查看任何用户的 Karma、加入日期、简介和最近的投稿。 深思熟虑的设计——温暖的手工调校色彩系统、全面的明暗支持、六种强调主题、触觉体验和流畅的动画。 可访问性 可访问性是 Ember 的一部分,特别关注色彩视觉。 绝不会仅凭颜色。 状态总是通过图标、形状或文本来传递,除了颜色——点数和评论数将 SF Symbol 与其值配对,阅读状态显示复选标记,选择状态使用环和复选标记。 色盲友好的提示。 专门的设置(当系统的“区分无色”开启时自动启用)在整个应用中增加明确的非颜色指示器。 VoiceOver。 故事行、评论和控件显示有意义的标签、提示、特征和自定义操作;每个故事作为一个完整的元素进行朗读。 动态类型。 排版会随系统文本大小而缩放,布局(包括评论缩进)会适应可访问性大小。 限制运动。 启用“限制运动”时,动画和加载闪光效果最小化。 下划线链接。 评论中的链接可以下划线,以便在不依赖颜色的情况下保持可识别性。 入门流程会适应。 在首次启动时,Ember 检测 VoiceOver、限制运动、区分无色、粗体文本和大文本,开启匹配选项,并告诉你具体更改了什么。 截图 Feed 故事及评论 搜索 设置 入门 · 欢迎 入门 · 可访问性 架构 Ember 是纯 SwiftUI,没有第三方依赖。 UI:SwiftUI,目标为 iOS 18。 状态:Observation 框架(@Observable)用于视图模型和存储。 并发:异步 / 等待网络;通过 TaskGroup 同时提取 Feed 页面并容忍单个缺失项目。 持久性:UserDefaults 用于设置和阅读状态;一个 JSON 文件用于保存的故事。 数据源:官方 Hacker News Firebase API 用于 Feed、项目和用户。 Algolia HN 搜索 API 用于完整的评论树(每个线程一个请求)和搜索。 项目布局 Sources/ 应用/ 应用条目,根 tab 视图,环境线缆,应用内 Safari Models/ HNItem, HNUser, Feed, Algolia 模型 Networking/ HNService 协议,实时客户端,预览的模拟 Stores/ 设置,书签,阅读状态 DesignSystem/ 主题,排版,触觉,重用组件 Utilities/ HTML 评论渲染器,相对时间 功能/ Feed/ Feed 列表,过滤栏,视图模型 StoryDetail/ 故事头部 + 线程折叠评论 Search/ 相关性 / 最近性的搜索 Saved/ 书签 Settings/ 外观,阅读,可访问性,数据,关于 用户/ 个人资料 Onboarding/ 智能首次运行个性化 资源/ 资产,应用图标,Info.plist 工具/ 图标生成器,截图设备框架 入门要求 macOS 与 Xcode 16 或更新版本(构建和测试与 Xcode 26 / iOS 26 SDK)。 使用 XcodeGen 生成项目:brew install xcodegen。 构建并运行 # 1. 从 project.yml 生成 Xcode 项目 xcodegen generate # 2. 打开它 open Ember.xcodeproj # 3. 选择 Ember 方案并选择 iPhone 模拟器,然后运行。 或者从命令行构建:xcodegen generate xcodebuild -project Ember.xcodeproj -scheme Ember -sdk iphonesimulator -destination ' platform=iOS Simulator,name=iPhone 17 Pro ' build 生成的 Ember.xcodeproj 故意忽略 git — 在拉取后使用 xcodegen generate 重新生成。 重新生成资源 swift Tools/GenerateIcon.swift # 应用图标 swift Tools/FrameScreenshot.swift in.png docs/screenshots/x.png # 带设备框架的截图 设计笔记 评论 HTML 渲染器是一个小型专用解析器,专用于 Hacker News 发送的有限标签集 (<p> , <i> , <b> , <a> , <pre><code> , <br> 和实体),生成原生的 AttributedString 块,而不是

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡