JSPatch 代码分析

JSPatch 是一个 iOS 动态更新框架,只需在项目中引入极小的引擎,就可以使用 JavaScript 调用任何 Objective-C 原生接口,获得脚本语言的优势:为项目动态添加模块,或替换项目原生代码动态修复 bug。”

JSPatch 的实现原理可参考原作者(bang590)的相关文章。本文给出 JSPatch 部分代码分析纪录。

Read More

图片查看器中单张图片浏览的实现与优化

一、背景

百度浏览器3.1版本引入了图片查看器。我在3.2版本接手该模块,并修改与优化。百度浏览器中的图片查看器效果和微信中查看本人已发布照片调起的图片查看器功能类似。百度浏览器中许多模块能够调起图片查看器,如下载页面、趣星球、网页,以提供用户一致的图片浏览体验。

图片查看器的整体设计不必多说。在图片查看器中浏览单张图片时,为了实现最优的浏览体验,自己花了不少时间调试。本文对该部分功能中的知识和经验做记录。

Read More

在 UIScrollView 中使用 Autolayout

通过为控件设定约束,Autolayout 能够实现控件布局的自适应。当 app 运行时,iOS 根据预先设定的约束布局界面元素。

以约束的方式为控件 A 设定布局,控件 A 的实际布局数据是通过约束的依赖关系计算出来的。比如,控件 A 的 leading 始终和控件 B 的 trailing 相等,则控件 A 的 leading 数据依赖于控件 B 的 trailing 数据。

一、问题

当在 UIScrollView 中采用 Autolayout 方式布局时,情况变得有些复杂。UIScrollView 的 contentSize 依赖于其子视图的布局,而其子视图的布局依赖于 UIScrollView 的 contentSize。如图1所示。

Read More

iOS App 在不同状态下收到 push 通知的行为

iOS App有多种运行状态,并且可能在任一状态下接收到APNS (Apple Push Notification Service)发送来的push通知;针对一条push通知,用户可能采取不同动作。

为了合理的处理push通知,需要开发者在合适的地方提供处理代码。通过测试,本文总结出iOS App在不同状态下接收到push通知的行为。本文只是简单的总结处理push通知的时机,针对更加复杂的push功能未做调研。

Read More

iOS 工程默认源代码文件简介(译)

翻译自 Apple iOS developer library

源代码简介

app 工程创建后通常会自动生成一些源代码文件,通过这些源代码文件构建 app。其中大部分的工作是由 UIApplicationMain 函数完成的,UIApplicationMain 函数在 main.m 文件中自动被调用。UIApplicationMain 函数创建一个应用程序对象,该应用程序对象为 app 创建与 iOS 操作系统协同工作的基础设施环境,包括创建一个向 app 分发输入事件的 run loop

Read More