IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者
首页 / 空之境界
IT 2016-02-20 11:43:11 / 累计浏览 2,540

为UIView任意角设置圆角

这篇讲的是如何在 iOS 开发中为 UIView 的任意角设置圆角。作者从最常见的全圆角需求出发,指出虽然一句 `cornerRadius` 就能搞定四个角,但当我们只想让某些角变圆时,就得动用 `layer.mask` 与 `UIBezierPath` 这一组合。 文章核心在于利用 `UIRectCorner` 枚举精准控制哪些角需要圆角处理。通过枚举值,开发者可以灵活组合左上、右上、左下、右下四个角。作者展示了一个实际代码示例:在 `layoutSubviews` 中创建一个 `CAShapeLayer`,将其路径设置为一个由 `bezierPathWithRoundedRect:byRoundingCorners:cornerRadii:` 方法生成的贝塞尔曲线,最后将这个 shapeLayer 作为视图的遮罩。运行效果显示,一个视图的三个角(除了右下角)被成功设置成了圆角。 整个过程清晰展示了从发现问题(需要局部圆角)到提供具体实现方案的思路,对于需要精细化 UI 处理的 iOS 开发者来说,这是一个非常实用的小技巧。

本机暂存
IT 2016-02-11 22:56:52 / 累计浏览 2,820

小心别让圆角成了你列表的帧数杀手

这篇讲的是在iOS滚动列表中滥用圆角导致性能暴跌的“坑”。作者实测发现,为cell中的UIImageView设置`cornerRadius`时,随着圆角视图数量增加,帧率会迅速下滑至45fps甚至30fps以下,造成明显的卡顿感。 更出人意料的是,使用`layer.mask`来实现圆角,性能比`cornerRadius`还要差,帧率可能直接跌到20fps。文章剖析了根源在于**离屏渲染**,特别是频繁的上下文切换带来了数十倍于普通渲染的开销。 对此,作者给出了明确的避坑指南:滚动列表中应尽量避免使用`cornerRadius`或`mask`。如果必须使用,可以通过开启`shouldRasterize`来缓存渲染结果,或者采用预处理圆角图片、覆盖镂空图层等更高效的替代方案来保障流畅度。

本机暂存
IT 2016-02-11 22:42:42 / 累计浏览 5,940

iOS的定位原理揭秘

这篇讲的是iOS设备上那个既快又准的Wi-Fi定位,究竟是怎么实现的。文章从一个很直觉的矛盾点切入:家里的Wi-Fi路由器本身没有位置信息,手机却能通过它定位,这背后藏着一段“商业史”与一套精巧的算法。 作者梳理了Wi-Fi定位数据库的演进:从最早由Skyhook公司开车采集,到苹果后来凭借庞大的用户设备群建立起自己的数据库,完成了从依赖第三方到自主可控的转变。定位的精度和速度也随之提升,如今甚至无需连接Wi-Fi,设备缓存的周边信号信息就足以完成估算。 文章核心深入到了技术原理。它区分了基于信号到达时间等需要特殊硬件、在手机上不实用的方法,以及更可行的基于信号强度的定位。在后者中,又对比了“三角定位”和“指纹算法”的差异。三角定位需要预先知道AP位置,而指纹算法更像机器学习——先离线采集区域内的信号“指纹”建立数据库,在线定位时则将实时数据与之匹配。后者因对环境变化更强的适应性,成为智能手机室内定位的主流选择。 整篇从一个有趣的现象讲起,层层剥开技术实现的逻辑,让读者对日常使用却未曾深究的定位功能有了更立体的认识。

本机暂存
IT 2016-02-10 22:53:20 / 累计浏览 4,560

SQLIte这么娇小可爱,不多了解点都不行啊

这篇以轻松比喻开篇的文章,将SQLite与MySQL、Oracle这些“壮汉”数据库对比,形象地突出了SQLite“轻量嵌入式”的核心定位。作者没有停留在简单的介绍,而是深入剖析了SQLite的设计哲学与技术细节。 文章系统梳理了SQLite的关键特点:零配置、无服务器、单文件存储、跨平台且体积极小(可低于300KiB),同时也坦诚指出了它在并发写入、存储过程和用户权限管理上的局限。其核心价值在于,对于移动设备等特定场景,这些缺点往往可以接受,而其优点则非常突出。 更深入的部分在于对SQLite事务与锁机制的解析。文章详细阐述了其5种锁状态(UNLOCKED到EXCLUSIVE)和3种事务类型(DEFERRED、IMMEDIATE、EXCLUSIVE)如何协同工作,并解释了潜在的死锁问题。特别针对SQLite 3.7.0引入的WAL(Write-Ahead Logging)机制,文章对比了传统的回滚日志方式,说明了WAL如何通过将修改写入单独文件来实现“读写并发”,显著提升了性能,同时也指出了其适用条件和潜在缺点。 总体来看,文章从形象类比到特性清单,再到深层机制剖析,层层递进。它告诉读者,SQLite并不仅仅是一个“简单”的数据库,其内部有着精巧的事务控制逻辑,理解这些是用好它的关键。

本机暂存