彬彬的博客

  • 首页
  • 归档
  • 分类
  • 关于

iOS 自带九宫格拼音键盘与 Emoji 表情之间的坑

发表于 2018-05-19 | 分类于 iOS 知识小集

最近产品提了一个需求:要求某个“输入框”禁止输入 Emoji 表情,我们能想到的方案是:在 UITextField 的 textField:shouldChangeCharactersInRange:replacementString: 代理方法中判断即将输入的字符串是否包含 Emoji 表情,如果包含,就在该方法中返回 NO,不允许输入。

阅读全文 »

再谈 UITableView 的 estimatedRowHeight

发表于 2018-05-12 | 分类于 iOS 知识小集

今天发现之前写的一个基于 UITableView 的列表页面存在如下问题:

当列表在滑动过程中,特别是往下滑快接近底部时,右侧的滚动条一直在不断地抖动,并且滚动条的长度也在不断地微小变化;另外,当滑动到底部加载下一页数据并 reloadData 后,列表的内容会整体跳动往上偏移一段距离。这是什么原因呢?

阅读全文 »

微信小程序“反编译”实战(二):源码还原

发表于 2018-05-11 | 分类于 小程序

在上一篇文章《微信小程序“反编译”实战(一):解包》中,我们详细介绍了如何获取某一个小程序的 .wxapkg 包,以及分析了 .wxapkg 包的结构,最后通过脚本解压获取包中的文件:小程序“编译”后的代码文件和资源文件,但是由于这些文件大部分被混淆了,可读性很差,所以本文将进一步分析,尽可能地把 .wxapkg 包的内容还原为“编译”前的内容。

阅读全文 »

微信小程序“反编译”实战(一):解包

发表于 2018-05-08 | 分类于 小程序

本实战教程将一步步告诉你如何“反编译”获得其它小程序的源代码,包括“解包”和“源码还原”两篇,主要参考了看雪论坛、V2EX、GitHub 等网站上的帖子、教程、工具,在此不胜感激,参考链接详见文章底部,以及加上了我自己的一些理解和总结。

阅读全文 »

使用 YYFPSLabel 快速检测页面滑动的流畅度

发表于 2018-05-05 | 分类于 iOS 知识小集

FPS (Frames Per Second) 是图像领域中的定义,表示每秒渲染帧数,通常用于衡量画面的流畅度,每秒帧数越多,则表示画面越流畅,60fps 最佳。

在 iOS 开发中,在复杂布局的列表页面,我们通常需要对列表的滑动进行性能优化,以保持页面流畅。对于保持流畅的优化技巧,可以参见 @ibireme 的这篇文章《iOS 保持界面流畅的技巧》,我们不再赘述。

这里主要介绍一下如何快速检测页面滑动的流畅度,即如何检测屏幕的 FPS ?

阅读全文 »

Objective-C 可变容器对象的初始化方法使用总结

发表于 2018-04-28 | 分类于 iOS 知识小集

最近在 Review Code 时,发现团队中不同成员对一个 可变字典空对象 的初始化方式写法都不太一致,主要有以下几种:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 第 1 种
NSMutableDictionary *dict1 = [[NSMutableDictionary alloc] init];

// 第 2 种
NSMutableDictionary *dict2 = [NSMutableDictionary new];

// 第 3 种
NSMutableDictionary *dict3 = [NSMutableDictionary dictionary];

// 第 4 种
NSMutableDictionary *dict4 = [NSMutableDictionary dictionaryWithCapacity:10];

// 第 5 种
NSMutableDictionary *dict5 = @{}.mutableCopy;
阅读全文 »

使用 LLDB bugreport 命令导出 App 运行崩溃日志

发表于 2018-04-21 | 分类于 iOS 知识小集

在日常开发调试 App 过程中,当我们写的代码有 Bug 导致崩溃时,此时我们通常会断点到崩溃的位置,然后查看 Xcode 控制台输出崩溃原因进行解决。

但有些时候我们手头可能有其它的活不能立即进行排查,或者崩溃的是其他同事的代码,需要先把控制台的崩溃日志复制粘贴到其他地方保存起来,过后再看或者告知同事进行解决。强大的 LLDB 调试工具提供了一个 bugreport 命令帮我们快速完成导出日志这件事。

阅读全文 »

如何优雅地获取 ScrollView 的滚动方向

发表于 2018-04-14 | 分类于 iOS 知识小集

在有些场景,我们可能需要获取 UIScrollView(及其子类)的滚动方向来做不同的操作。

我们首先能想到最直观的方法是:用一个变量或属性 lastContentOffset 去保存 scrollView 上次的 content offset 值,然后在 UIScrollView 的 scrollViewDidScroll: delegate 方法中跟 scrollView 当前实时的 content offset 做对比来判断滚动方向,代码大致如下:

阅读全文 »

使用 NSUserDefaults 存储 NSDictionary 的一个坑

发表于 2018-04-01 | 分类于 iOS 技术文章

前两天,@Vong 同学在我们知识小集群里发了一段用 NSUserDefaults 存储一个 NSDictionary 字典对象的测试代码,虽然代码看起来似乎很正常,但是运行的时候报错了,根据群里大家的讨论结果,本文整理总结一下。

阅读全文 »

使用 LLDB expression 命令调试动态更新 UI

发表于 2018-03-31 | 分类于 iOS 知识小集

在日常 App 开发过程中,进行真机或者模拟器调试时,我们可能需要微调一下界面上的 UI 元素,比如色值、位置等来看看效果,但如果每次都通过修改代码,然后重新编译运行会比较麻烦,其实我们可以通过 LLDB 调试命令来动态地修改。

LLDB 的 expression 命令用于执行一个表达式,并将表达式返回的结果输出。

阅读全文 »
1…678…10
彬彬

彬彬

95 文章
12 分类
0%
© 2015 - 2025 kangzubin.com 京ICP备14046576号-1
Powered by Hexo
,
Theme from NexT.Gemini
本网站由 又拍云 提供 CDN 加速/云存储服务