三十一

潜心修行。。。

UITableViewCell嵌套UICollectionView布局

在不断填坑中前进。。

UITableViewCell嵌套UICollectionView布局 开发中经常遇到 cell 嵌套九宫格展示图片之类的需求,类似于下面的情况。 最简单的办法就是 cell 里面嵌套 collectionView,具体的做法是: 在 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexP...

NSInvocation如何调用block

在不断填坑中前进。。

NSInvocation如何调用block NSInvocation是调用函数的另一种方式,它将调用者,函数名,参数封装到一个对象,然后通过一个invoke函数来执行被调用的函数,其思想就是命令者模式,将请求封装成对象。 NSMethodSignature 用于描述 method 的类型信息:返回值类型,及每个参数的类型。 NSInvocation 简单实用 NSMethod...

Aspects源码浅析

在不断填坑中前进。。

Aspects源码浅析 Aspects 可以很方便的让我们 hook 要执行的方法,可以很方便的在方法执行前,执行后来执行我们的操作,也可以替换原方法的实现。 Delightful, simple library for aspect oriented programming in Objective-C and Swift. 实现原理简单的说就是,通过动态创建子类、动态修改...

为博客增加大图浏览模式

在不断填坑中前进。。

为博客增加大图浏览模式 之前使用 Huxpro 的博客模板搭建了这个博客。后来的使用过程中,发现缺少了大图浏览的功能,作为一个前段萌新,用了两天时间为博客加了一个粗糙的大图浏览功能。 如何居中显示一张大图 首先我们要做的就是如何在屏幕中间展示一个大图片。也不废话了,下面的代码是我一个个试出来的。 大图的标签: <div id="YunisTestImage" class="SYY...

可响应部分文字点击的Label

在不断填坑中前进。。

可响应部分文字点击的Label 平时开发中,几乎都会碰到一个需求,需要文本中部分文字能被点击。也有很多很好的第三方库的支持。本着学习的目的,写了一个简单的部分文字响应点击的UILabel 控件。 实现思路是绘制文本时,记录需要响应点击事件的文本位置,然后当点击控件时,根据触摸的点,计算出当前点击的点位于文本的位置。判断点击位置是否与需要响应点击的位置重合。 思路就是这样,主要就是两点:...

CTFrameGetLines 获取数组为空

在不断填坑中前进。。

CTFrameGetLines 获取数组为空 最近在写一个可点击的 UILabel 控件,基于 coretext 排版,发现有时候使用 CTFrameGetLines() 函数获取的行数为空。这种情况是在使用 autolayout 时发现的,后面又手动设置 frame ,发现当 frame 高度设置的值比较小时,就会出现这个问题。最终发现是设置画板时,可绘制的区域高度过小导致无法绘制完成...

Objective-C 中的消息与消息转发

在不断填坑中前进。。

Objective-C 中的消息与消息转发 消息转发流程梳理

word多级项目索引联动

在不断填坑中前进。。

word多级项目索引联动 软件为 Word 2016 MAC 版本 上图的意思就是 第3级的标题徐海格式为 3.1.1 其实编号为1,作用与标题2上。 上图的意思就是 第3级的标题徐海格式为 3.1.1.1 其实编号为1,在级别3上序号重新从1开始,作用与标题4上。

iOS 自动化打包工具-利用Python修改源文件,自动切换服务器地址

在不断填坑中前进。。

iOS 自动化打包工具-利用Python修改源文件,自动切换服务器地址 之前写过一个打包工具 自动化的一些实践 使用了一段时间后,觉得有两个问题: 无法切换服务器地址 每次 Swift 版本更新,需要重新编译 所以觉得抛弃 Swift ,重写写一个版本的工具。 1. 用户输入打包的服务器地址以及本次 APP 更新的内容 没什么好讲的,直接看代码 import sys ...

CentOS 7 启动一个简单的 Nodejs 服务

在不断填坑中前进。。

CentOS 7 启动一个简单的 Nodejs 服务 1. 安装 nodejs $ curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash - $ sudo yum -y install nodejs 2. 开启一个 http server 新建一个文件 index.js var http =...