惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

I
Intezer
宝玉的分享
宝玉的分享
V
Visual Studio Blog
The Cloudflare Blog
云风的 BLOG
云风的 BLOG
Engineering at Meta
Engineering at Meta
Stack Overflow Blog
Stack Overflow Blog
Vercel News
Vercel News
P
Proofpoint News Feed
阮一峰的网络日志
阮一峰的网络日志
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
V
V2EX
博客园 - Franky
J
Java Code Geeks
月光博客
月光博客
博客园 - 三生石上(FineUI控件)
D
Docker
IT之家
IT之家
小众软件
小众软件
M
MIT News - Artificial intelligence
Spread Privacy
Spread Privacy
雷峰网
雷峰网
C
CERT Recently Published Vulnerability Notes
N
News | PayPal Newsroom
量子位
The Last Watchdog
The Last Watchdog
The Register - Security
The Register - Security
PCI Perspectives
PCI Perspectives
罗磊的独立博客
S
Secure Thoughts
WordPress大学
WordPress大学
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
B
Blog
T
Threatpost
The GitHub Blog
The GitHub Blog
博客园 - 叶小钗
U
Unit 42
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
H
Help Net Security
Cloudbric
Cloudbric
G
Google Developers Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
人人都是产品经理
人人都是产品经理
H
Heimdal Security Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Last Week in AI
Last Week in AI
Jina AI
Jina AI
O
OpenAI News
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
美团技术团队

iOS

iPhone 今年出折叠屏吗? - V2EX 无意中发现 ios27 快捷指令自动化实现了任意应用通知监听,这实际上实现了无限的通知转发能力 - V2EX 成都 - 寻外企开发岗: iOS/Flutter/React-Native 等 - V2EX 又发现一个 iOS 虚拟定位工具 - V2EX ios27 beta 任意一个版本,稍微离路由器远点 wifi 就掉了,感官上稳定连接范围比之前小了 1/3 左右 - V2EX 27beta2 的镜像还是有点问题 - V2EX iOS 27 的 Siri 终于变成了聊天 App 的样子,还能直接切到 ChatGPT - V2EX 我被 iOS27 的原生中文输入法折磨疯了 - V2EX IOS 的 万年 BUG 还是 有意为之? - V2EX 求助:使用 Loom,配置了规则,还是收不到 x 和 tg 的通知 - V2EX outlook 在 iOS26.5.1 上不推送了 - V2EX 正式发布 Pastel - 迄今空前强大的一款 IPA 下载工具 (macOS) ios 原来是有商业号码识别的吗 iOS 27 的性能提升真是实打实的,造福第三方 app 为什么感觉 IOS27 续航变好了 iPhone iOS26 用 Giffgaff,电话图标上始终显示通知红点 现在 iOS 26 是不是不支持跨区更新 App 了?主账号是美区的,通过中区下载的抖音,好久没更新了,有什么解决办法? 中国区的 Apple Developer 账号可以开发 iOS 27 的 AI 框架吗? iOS 27 设置“通过说话使用 Siri” iOS27 杀后台情况怎么样? - V2EX [集中贴] iOS 27 目前已知问题汇总 iOS 27 beta 有 dfu 安装包么? 来来统计一下 iOS27beta 目前的 bug iOS 27 新增节假日闹钟,称该功能是考虑中国用户调休的问题 已严肃升级 IOS27 开发者版本 [IOS 赠码] iAssets(知盈)资产管理管家正式登录 APP Store 售卖了! 时刻同步(SynoSync)1.1.5 版本更新: iOS 低版本支持 分享简单强大的闹钟增强捷径:一次性删除所有已过期闹钟、自定义批量间隔闹钟等,支持 ios26 也是 vibe coding 上了,第一款 app 在审核了 升级到 ios 26.5 以后 玻璃效果在手机晃动的时候会有真实玻璃的光影效果 国内 FaceTime 如何仅音频通话 ios 26.5 耗电量显著增加 豆包输入法 ios 版导入系统短语不完全 小白问题:为什么还存在使用 iOS18 键盘的软件? iOS26.5 终于修复部分 Safari 用户加载网页耗时非常长,甚至不可用的情况 iOS 26.5 新增“彩虹流光”壁纸挺好看,梦回 Material 1 iOS 26.5 正式版已推送 AppleID 安全提示问题变成英文了,回答错误。如何调整 - V2EX SynoSync: iOS 平台现代化群晖文件同步工具 iOS app 不主动授权能看到其他 app 的信息嘛 weatherkit 可能也受到了苹果的地理围栏 关于 telegram 无法推送,修改 APNs 规则后, iCloud 无法同步,现在有完美的解决方案吗? 不想在 iOS 上安装两个 App 分别看视频和漫画?聊聊我为什么要开发 Nas Player Pro:一个极轻量、零缓存的“二合一”方案 iOS 屏蔽更新的描述文件(tvOS26 Beta)今天失效了 iOS 无法收到 TG 的通知 IOS 的 APP,点发送照片,弹出来的最近照片大部分是暗的,右上角都有个下载图标,少部分亮色可以直接发,这是什么原因? iCloud 相册是否可以做到只备份照片,不备份视频? app store 兑换 app 一直卡住怎么排查问题? VexTest ios 版本更新至 18.7.8 后部分 app 出现无法联网的情况 [iOS 公测招募] iAssets 资产管理管家 求助, iPhone 升级到 ios18.7.7 后反复弹窗“运营商设置更新”,怎么办? - V2EX 大家有没有遇到过 iOS 提醒事项只要设置时间就会消失的情况 - V2EX iPhone 17pm 升级 iOS26.4 会变卡? - V2EX Vex——更现代的 V2EX ios 客户端 更新到 18.7.7 的老哥 ,是不是某些网站上不去 - V2EX 13PM 升级到 18.7.7 卡? - V2EX 13pm 现在 18.6.2 有必要更新到 26.4 吗,有经验的兄弟说说 - V2EX iOS15、16 要更新 iOS18 吗? - V2EX iOS 26.4 不换 Apple ID 能正常更新外区下载的 App 吗? - V2EX iOS 原生 RSS 应用内测招募 - V2EX 如果你遇到 iPhone 自己半夜拨出电话的灵异事件 - V2EX iOS 漏洞攻击工具 DarkSword 在 GitHub 开源 - V2EX IOS 上像支付宝这种自带安全键盘输入密码,怎么关联密码管理器自动输入? - V2EX 给 WeChat 无痛降级,解决服务号折叠带来的麻烦 - V2EX 求问如何取:ios 设备只要连上车载蓝牙,手机上的 qq 音乐就自动开始放歌. - V2EX iOS26 立体声与横竖屏的问题 - V2EX iOS 自带输入法难用的可以试试滑动输入 - V2EX IOS26 如何设置弱密码? 求助, ios shadowrocket 使用 socks5 over TLS 时添加相互认证失败 - V2EX 为什么 iOS 26 这个脑残 bug 这么多版本都没有修复? - V2EX 2026 年有没有好用的 ios 去广告方式? - V2EX iOS26.4 Beta2 App Store 内切换账号的按钮变化 - V2EX IOS 更新从 18.3 到 26.26.3 的惊悚感 - V2EX iOS26 版本下中文输入法哪个语音识别是最好的?豆包输入法是没有笔画吗? - V2EX 求推荐 iOS 电子书阅读器 - V2EX 感觉熊猫吃短信 2 在 iOS26 并不是完美解决方案,还有什么过滤垃圾信息的 app - V2EX 大家的 iMessage 都正常吗?我的 iPad 蜂窝版怎么没法登陆了。 - V2EX [iOS14.0-26.3]使用 CowabungaLite 自由定义图标/无重载/无灵动岛提示/保留动画 有没有必要通过延迟更新,更新到 iOS18.7.2(苹果内置证书 27 年过期问题?) iOS 里除了这两处设置项能改字体大小,应该没有其他地方能了吧? 解决 iOS Safari 谷歌搜索跳 google.com.hk ( 不用改地区 ) iPhone 交互式壁纸是什么原理? iOS26 的相册如何禁用 HDR? 自签证书 30 一年 但是 14 天下证书 via 浏览器有提供打开特定的地址的 URI 吗? iOS 升 26 后双拼一直有问题 IOS26 截图全黑无解吗? iOS26 定位更新延迟? Qx 的规则配置如何更新? Quantumult X 1.5.5 正式版发布 Add support for Reality TLS 大家可以每人推荐一个 ios 的 app 吗 iMessage 可以发出但是无法送达 Books 这个 app 真是令人无语 QX 开启 TF 测试 IOS18.2 微信摄像头间歇性卡死 iOS 发现电量突然消耗快变很多时,可以试试重启 - V2EX iOS 26.2 来电话不响 iOS iPad OS 上有什么好用的电子书吗? 请教大家关于 swiftgram 消息提醒及 ios 插件注入的问题
iOS 下怎么就找不到好用的新手引导组件呢?还是得自己动手
Whatisup · 2026-01-12 · via iOS
PolarisGuideKit:轻量、低侵入的 iOS 新手引导组件(遮罩挖孔 + Buddy View + 插件化) 关键词:UIKit · 新手引导 · 低侵入 · 插件扩展 GitHub:** https://github.com/noodles1024/PolarisGuideKit ** 背景:我为什么做这个组件? 可能是新手引导这个功能太小,随便实现一下也能用,导致没有人愿意来写认真写一个 iOS 下的新手引导组件,搜遍整个 github 也找不到一个在现实项目中能直接拿来用的。如果只考虑某一个具体的新手引导界面,实现起来很容易(特别是现在在 AI 的加持下,UI 仔都不需要了)。但在不同项目、不同场景下,经过和和产品经理&设计师的多次沟通中,我发现了做“新手引导/功能提示”时的一些令人头疼的问题: 需要高亮某个控件,但布局变化、屏幕旋转后挖孔(高亮)位置容易偏 指引说明(箭头/气泡/按钮)形态不固定,可能还伴随着音频播放等附加功能,复用困难 点击高亮区域时,难以做到 不侵入原有点击业务逻辑 显示新手引导时难以在不改变原有逻辑的情况下阻止 NavigationController 的滑动返回 UITableView/UICollectionView reloadData 后高亮经常失效 于是我做了 PolarisGuideKit :一个基于 UIKit 的轻量新手引导组件,主打 低侵入 + 可扩展 + 动态高亮 。 PolarisGuideKit 能解决什么? 能力 说明 带来的价值 高亮遮罩 遮罩挖孔高亮 focusView 高亮区域自动跟随,内置高亮效果,可自定义 Buddy View 说明视图可自由定制 文案、箭头、按钮任意组合 步骤编排 多步骤引导流程 支持下一步、跳过、完成 动态 focusView reloadData 后自动修正 TableView/CollectionView 场景稳定 插件化扩展 Audio/埋点/持久化 可插拔、解耦 快速上手( 3 分钟接入) import UIKit import PolarisGuideKit final class MyViewController: UIViewController { private var guide: GuideController? override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) let step = GuideStep() step.focusView = myButton step.buddyView = MyBuddyView() step.forwardsTouchEventsToFocusView = true step.completer = ControlEventCompleter(control: myButton, event: .touchUpInside) let controller = GuideController(hostView: view, steps: [step]) controller.onDismiss = { _, context in print("引导结束,原因 = \(context.reason)") } _ = controller.show() guide = controller } } 核心概念一图速览 GuideController :流程编排器,负责 show/hide/切换步骤 GuideStep :一步引导配置( focus 、buddy 、style 、completer ) FocusStyle :高亮形状(矩形/圆形/圆角/无高亮) GuideBuddyView :说明视图(可继承自定义) GuidePlugin :生命周期扩展(音频/埋点/持久化) 重点能力拆解 1) FocusStyle:高亮样式可拔插 内置样式包含: DefaultFocusStyle (矩形) RoundedRectFocusStyle (圆角矩形) CircleFocusStyle (圆形) NoHighlightFocusStyle (全屏遮罩) let step = GuideStep() step.focusView = someCard step.focusStyle = RoundedRectFocusStyle( focusCornerRadius: .followFocusView(delta: 2), focusAreaInsets: UIEdgeInsets(top: -6, left: -6, bottom: -6, right: -6) ) 2) 动态 FocusView:Table/CollectionView 不卡壳 UITableView / UICollectionView 复用导致高亮错位? 使用 focusViewProvider 动态获取最新 cell: let step = GuideStep() step.focusViewProvider = { [weak self] in guard let self else { return nil } var cell = self.tableView.cellForRow(at: targetIndexPath) if cell == nil { self.tableView.layoutIfNeeded() cell = self.tableView.cellForRow(at: targetIndexPath) } return cell } 3) 触摸转发 + 自动完成 在不侵入原有业务逻辑的前提下,高亮按钮依然能触发业务逻辑,同时自动关闭引导: let step = GuideStep() step.focusView = myButton step.forwardsTouchEventsToFocusView = true step.completer = ControlEventCompleter(control: myButton, event: .touchUpInside) ✅ 设置 forwardsTouchEventsToFocusView 和 completer 保证了“引导不侵入原有业务逻辑”。 4) Buddy View:说明视图随便做 继承 GuideBuddyView ,自定义 UI + 布局: final class MyBuddyView: GuideBuddyView { override func updateLayout(referenceLayoutGuide layoutGuide: UILayoutGuide, focusView: UIView) { super.updateLayout(referenceLayoutGuide: layoutGuide, focusView: focusView) // 根据 layoutGuide 布局你的文案 / 按钮 / 箭头 } } 5) 插件系统:音频 / 埋点 / 持久化 内置 AudioGuidePlugin ,可在显示引导时播放音频文件,且可在 BuddyView 中配合显示音频播放动画(可选功能): let step = GuideStep() step.focusView = myCard step.addAttachment(GuideAudioAttachment(url: audioURL, volume: 0.8)) let controller = GuideController( hostView: view, steps: [step], plugins: [AudioGuidePlugin()] ) 如果想要加埋点、标记“引导是否已显示”,可通过自定义 GuidePlugin 实现。 Demo 示例一览 圆角矩形高亮 + 圆角模式切换 圆形高亮 + 半径缩放 多步骤引导 + 平滑转场 触摸转发 + 自动完成 点击外部关闭( dismissesOnOutsideTap ) 音频 + Lottie 同步演示 UITableView 动态高亮 架构 & 视图层级 flowchart TB subgraph Core["核心组件"] GuideController["GuideController<br/>(流程编排器)"] GuideStep["GuideStep<br/>(步骤配置)"] end subgraph ViewHierarchy["视图层级"] GuideContainerView["GuideContainerView<br/>(透明容器)"] GuideOverlayView["GuideOverlayView<br/>(遮罩 + 触摸转发)"] MaskOverlayView["MaskOverlayView<br/>(遮罩基类)"] GuideBuddyView["GuideBuddyView<br/>(说明视图)"] GuideShadowView["GuideShadowView<br/>(焦点追踪器)"] end subgraph Extensions["扩展机制"] FocusStyle["FocusStyle<br/>(高亮形状)"] GuideAutoCompleter["GuideAutoCompleter<br/>(完成触发器)"] GuidePlugin["GuidePlugin<br/>(生命周期钩子)"] GuideStepAttachment["GuideStepAttachment<br/>(插件数据)"] end GuideController -->|"管理"| GuideStep GuideController -->|"创建并承载"| GuideContainerView GuideController -->|"派发事件"| GuidePlugin GuideContainerView -->|"包含"| GuideOverlayView GuideContainerView -->|"包含"| GuideBuddyView GuideOverlayView -.->|"继承"| MaskOverlayView GuideOverlayView -->|"创建"| GuideShadowView GuideOverlayView -->|"使用"| FocusStyle GuideStep -->|"配置"| GuideBuddyView GuideStep -->|"使用"| FocusStyle GuideStep -->|"通过...触发"| GuideAutoCompleter GuideStep -->|"携带"| GuideStepAttachment 安装 Swift Package Manager Xcode → File → Add Packages… 输入仓库地址: https://github.com/noodles1024/PolarisGuideKit 选择 PolarisGuideKit CocoaPods pod 'PolarisGuideKit' import PolarisGuideKit 注意事项(踩坑清单) focusView 必须是 hostView 的子视图 多 Scene / 多 Window 建议显式传 hostView GuideAutoCompleter 触发后会结束整个引导(建议用于最后一步) 动画转场在复杂形状下可关闭动画: animatesStepTransition = false 项目地址 & 交流 GitHub:** https://github.com/noodles1024/PolarisGuideKit ** Issues / PR:欢迎一起完善 如果觉得有帮助,欢迎 Star ⭐️