自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

CaryaLiu的专栏

学习,坚持学习

  • 博客(119)
  • 收藏
  • 关注

原创 iOS自定义Push转场

自定义Push转场理论首先,需要实现UINavigationController的delegate方法。func navigationController(_ navigationController: UINavigationController, animationControllerFor operation: UINavigationController.Operation, from fromVC: UIViewController, to toVC: UIViewController) -

2021-10-22 11:51:52 682

转载 设计原则之单一职责原则

文章目录单一职责原则(SRP)如何理解单一职责原则(SRP)?如何判断类的职责是否足够单一?类的职责是否设计得越单一越好?本文是极客时间里王争专栏《设计模式之美》的学习笔记,你可以通过链接阅读原文获取更加详尽的描述,也可以通过该链接进行订阅和购买获取优惠。单一职责原则(SRP)SOLID原则是由 5 个设计原则组成的,它们分别是:单一职责原则、开闭原则、里式替换原则、接口隔离原则和依赖反转原则,依次对应 SOLID 中的 S、O、L、I、D 这 5 个英文字母。今天学习的是 SOLID 原则中的第一个

2021-08-05 15:28:27 182

原创 如何解决Timer的循环引用

本文主要探讨`Timer`以包含`target`的初始化方法来创建实例时,如何避免造成循环引用。

2021-07-08 17:54:06 613

原创 UICollectionViewLayoutAttributes初探

UICollectionViewLayoutAttributes是UICollectionView的重要组成部分,本文从其基本定义、如何使用以及使用场景几方面来简单介绍。文末以自定义UICollectionView各个Section的背景色的示例来展示UICollectionViewLayoutAttributes的应用。

2017-12-31 09:49:33 3867

原创 Xcode使用xcconfig文件配置环境

与公司 QA 聊天,已不止一次被吐槽说移动端从开发环境转到生产环境时,还要靠修改代码来配置对应的环境参数。她认为,从 App 转测试之后,就不应该再修改代码,可以把所有的环境配置都整合到配置文件中,这样打不同环境下的安装包时,会自动选择对应的环境参数。这里说到的环境参数包括但不仅限于: webservice 地址,友盟 AppKey,极光推送 AppKey 和是否是生产环境标志等。

2016-05-29 22:39:49 10406

原创 iOS自动打包并发布脚本

欢迎到我的 个人博客 http://liumh.com 浏览此文本文最终实现的是使用脚本打 Ad-hoc 包,并发布测试,当然稍微修改一下脚本参数就可以打其他类型的 ipa 包了。另外该脚本还实现了将生成的 ipa 包上传至蒲公英进行测试分发。文中内容包括:xcodebuild 简介使用xcodebuild和xcrun打包签名将打包过程脚本化

2015-12-08 22:49:48 2227 2

原创 iOS如何为NSMutableArray添加KVO

欢迎到个人博客: liumh.com查看本文。本文为原创,未经允许勿转载在项目,可能会有需求需要监听 NSMutableArray 的变化,例如在可变数组中加入、删除或者替换了元素,我们需要根据这些变化来更新UI或者做其他操作。那么如何来监听呢?方法1,使用 mutableArrayValueForKey: 代理,这样,我们在获取定义的数组属性时不再使用其 getter 方法,而是通过代理方法获取数

2015-10-20 22:10:23 10372

原创 iOS初探+load和+initialize

`+ initialize` 和 `+ load` 是 `NSObject` 类的两个类方法,它们会在运行时自动调用,我们可以利用其特性做一些初始化操作。可以先思考如下示例控制台应该输出什么:

2015-10-20 22:08:29 4446 2

原创 iOS限制UITextField的输入字符数

项目中经常会遇到限制UITextField中输入字符数的需求,并且会根据输入的英文还是中文给出不同的限定数,本文记录其解决方案。对于全英文的输入限定很简单,但是输入中文时,当输入拼音但未选择中文时,此时输入文本框的文字会包括输入的拼音,是选中的状态,比如这样:

2015-10-20 22:06:17 1798

原创 iOS KVC 集合操作

进一步阅读之前,可以先思考这个问题: 存在数组 `@[@(90), @(31), @(65), @(78), @(76)]`,如何取出数组中的最大值或者最小值?KVC 的集合操作符可使用键路径和操作运算作用于集合中的所有元素。本文将描述一些可用的集合操作。

2015-10-20 22:04:11 1917

原创 iOS绘制渐变背景滑动条

本文记录的是如何绘制一个背景颜色渐变的滑动条,最终的效果如下图:

2015-10-20 22:01:47 2143

原创 iOS获取UIView上某点的颜色值

项目需求中遇到获取`UIView`上某个坐标点的`RGB`颜色值的需求,现在把自己找到的解决方案简单总结记录一下,遇到了下面的情况:

2015-10-20 21:58:31 8334

原创 iOS为UIView添加虚线边框

欢迎到个人博客: liumh.com查看本文。本文为原创,未经允许勿转载有时候需要为UIView添加虚线描边,本文记录一种实现方式,主要是通过对UIView的根layer添加CAShapeLayer来完成。效果图如下:核心代码示例如下:CGSize screenSize = [UIScreen mainScreen].bounds.size;CGFloat viewWidth = 200;CGF

2015-10-20 21:56:10 17531

原创 iOS NSLayoutConstraint priority

欢迎到个人博客: liumh.com查看本文。本文为原创,未经允许勿转载使用 Storyboard 时,通常情况下,可能你不会去关心 NSLayoutConstraint 的 priority 属性,使用 Storyboard 提供的默认值就能达到要求。但是最近遇到对 UILabel 的如下布局要求时,就需要涉及对 priority 的修改。如上所示,我们期望 UILabel 显示字符串较短时,以内

2015-10-20 21:54:10 3831

原创 iOS AutoLayout 百分比布局

本文记录如何在 UIStoryboard 或者 xib 中进行百分比布局,包括* View.Width 占其 Superview.Width 的百分比* View.Leading 与 Superview.Leading 间距占 Superview.Width 的百分比* View.Trailing 与 Superview.Trailing 间距占 Superview.Width 的百分比

2015-10-20 21:51:28 18571 3

原创 iOS代码设置渐变背景色

欢迎到个人博客: liumh.com查看本文。本文为原创,未经允许勿转载项目会遇到给各种UI控件添加渐变背景色的需求,如果只是上下渐变或者左右渐变,可以使用Xcode xcassets的Slicing功能或者 api- resizableImageWithCapInsets:完成功能,但是如果是从左上角到右下角的渐变,或者是右上角到左下角渐变,使用截图恐怕不能完成。下面介绍一种生成渐变颜色UIIma

2015-10-20 21:48:27 6452

原创 iOS改变UIImageView的image时添加渐变

当改变UIImageView的image属性时,UI会立刻从一张图片切换到另一张图片,显得十分生硬,本文记录如何为改变UIImageView的image属性时加入淡入淡出的效果。

2015-10-20 21:45:21 5056

原创 iOS NSData 和十六进制字符串之间的相互转换

本文记录的是使用OC进行NSData和十六进制字符串之间的相互转换。其中将十六进制字符串转换成NSData的代码如下:

2015-10-20 21:41:41 14009

原创 iOS初探KVO

KVO, 即键值观察,提供了一种让一个对象监听另一个对象的特定属性变化的机制。这在 MVC 的 Model 层 和 Controller 层间通信十分有用。通常情况下,Controller 会监听 Model 对象的属性变化,或者 View 对象会通过 Controller 来监听 Model 对象的属性变化。除此之外,在 Model 对象需要感知其依赖值的改变的时候,该 Model 对象也可以监听其他 Model

2015-10-20 21:06:54 1240 1

转载 Xcode代码颜色高亮及代码智能补全失效的解决方法

转自:http://blog.csdn.net/guoguoljg/article/details/8477551今天遇到了这种情况,网上搜索了一下,记录如下:1: 删除Derived Data . Window->Organizar->Projects, 然后点击Delete删除Derived Data,关闭Xcode重新打开工程.2: 包含头文件问题,如果引用了buil

2013-04-18 09:09:39 5134

转载 根据Debug和Release状态的变化来控制日志输出

转自:http://www.cocoachina.com/macdev/tips/2011/0506/2838.html我们平时在开发应用的时候,经常会用到 NSLog 来调试我们的程序,而随着项目越来越大,这些用于调试的日志输出就会变得很难管理。 发布正式版的时候一定要屏蔽掉所有后台输出,因为这些输出还是比较消耗系统资源的。 往往到了这个时候,我们不得不去一行一行的找到 NSLog 调用,然

2013-04-16 09:19:50 996

原创 一维数组的初始化问题

参考了:http://bbs.csdn.net/topics/310136813http://blog.csdn.net/sibylle/article/details/2026915一. 数组可以用一个初始列表值来初始化,如下所示:int array1[] = {1, 5, 8, 9};char array2[] = {'a', 'c', 'f', 'd', 'a'

2013-04-02 21:44:04 16265 1

原创 字符串中第一个只出现一次的字符

在字符串中找出第一个只出现一次的字符。如果输入”abcdafkkim", 则输出'b'.字符char类型只占一个字节,共8bit,因此字符总共有256中可能。所以我们可以创建一个长度为256的数组,每个字母根据其ASCII值作为数组的下标,该下标对应的数组元素记录该字母在字符串中出现的次数。这样我们就创建了一个大小为256,以字符ASCII码为键值的哈希表。总共需要遍历两次字符串,第一次遍

2013-04-02 20:50:53 2560

原创 linux下删除目录及其子目录下某种类型文件

Linux下,如果想要删除目录及其子目录下某种类型文件,比如说所有的txt文件,则可以使用下面的命令:find . -name "*.txt" -type f -print -exec rm -rf {} \;. : 表示在当前目录下-name "*.txt"表示查找所有后缀为txt的文件-type f表示文件类型为一般正规文件-print

2013-04-02 19:58:28 27389 6

原创 保留代码风格原格式复制到word文档

有时候我们需要在word文档中复制部分代码进行说明,但是直接复制的话word会显示错乱,破坏了代码的风格,下面的方法可保持代码的字体高亮和代码缩进不变而复制到word。1. 因为我们要用到vim的 TOhtml 功能,在vim的配置文件中加入如下设置:let html_use_encodding='gd2312'"make it show up as you see it in mvim

2013-02-26 11:11:19 11612 1

原创 内排序算法小结

从以下几个方面来比较排序算法:1. 算法的时间和空间复杂度2. 排序的稳定性3. 算法结构的复杂度4. 参加排序的数据规模排序的稳定性:稳定排序方法: 插入排序、冒泡排序、二路归并排序、基数排序是稳定排序算法;不稳定排序方法: 选择排序、谢尔排序、快速排序、堆积排序是不稳定排序算法。算法复杂度比较:各种内排序算法的时间、空间复杂度

2012-12-11 09:09:57 5177 1

原创 线性链表的逆序操作

关于线性链表的逆序可用循环和递归的两种方式完成,逆序的递归方式比较难理解,主要是返回头结点的问题。链表节点定义如下://定义线性链表结点typedef struct node { int data; struct node *link;}LNode, *LinkList;循环方式完成逆序://逆转线性链表LinkList reverseList(L

2012-11-29 14:56:49 1898

原创 求数组的子数组之和的最大值

问题来源:《编程之美》2.14 求数组的子数组之和的最大值一个有N个整型元素的一维数组(A[0], A[1], A[2], ...,A[N-1],求这个数组的子数组之和的最大值?首先应该明确:1.子数组应该是连续的,即子数组中的元素在原数组中是连续的。2.题目只要求求和,没有要求返回子数组的位置3.整型元素数组,则数组中可能包含正整数,0,负整数方法1:由题知,我们可以

2012-11-07 12:23:55 1619

原创 子数组的最大乘积问题

问题来源:《编程之美》2.13 子数组的最大乘积给定一个长度为N的整数数组,只允许用乘法,不能用除法,计算任意(N-1)个数的组合乘积中最大的一组,并写出算法的时间复杂度。1. 把所有(N-1)个数的组合找出来,分别计算它们的乘积,并比较大小,由于总共有N个(N-1)个数的组合,总的时间复杂度是O(N^2),不好。2. 以空间换时间,计算(N-1)个元素的最大乘积,假定第 i 个元素排

2012-11-06 10:56:47 3371

原创 快速寻找满足条件的两个数

问题来源:《编程之美》2.12 快速寻找满足条件的两个数能否快速找出一个数组中的两个数,让这两个数之和等于一个给定的数字,为了简化起见,我们假设这个数组中肯定存在至少一组符合要求的解。解题思路:可以先将数组升序排序,然后设定变量i = 0,j = size - 1,看array[i] + array[j] 是否等于sum, 如果相等,则结束。如果小于sum,则 i = i + 1; 如

2012-11-05 09:35:16 968

原创 寻找数组中的最大值和最小值

问题来源:《编程之美》2.10 寻找数组中的最大值和最小值对于一个由N个整数组成的数组,需要比较多少次才能把最大和最小的数找出来呢?1. 遍历两次数组,分别找出最大值和最小值。需要进行 2 * N 次比较2. 将数组中的元素分组,按顺序将数组中相邻的两个数分在同一组,用Max和Min来存储最大值和最小值,同一组比较完之后,较小的数与当前的最小值比较,如该数小于当前最小值,更新M

2012-11-01 05:50:14 17124

原创 二分查找那点事儿

二分查找你针对有序序列而言的一种查找算法,关于二分查找有一下的几类问题:1. 给定一个有序(不降序)数组arr,求任意一个i使得arr[i]等于v,不存在则返回-12.给定一个有序(不降序)数组arr,求最小的i使得arr[i]等于v,不存在则返回-13.给定一个有序(不降序)数组arr,求最大的i使得arr[i]等于v,不存在则返回-14.给定一个有序(不降序)数组arr,求最大

2012-10-31 20:17:26 1649

原创 二维数组名做参数传递问题

在用二维数组名作为参数传递时容易出现Segmention Error。这是因为不能正确为二维数组中元素寻址的问题,正确的方法如下:1. 用指向一维数组的指针变量,如下例子所示:#include #include #define N 4void testArr(int (*a)[N], int m){ for(int i = 0; i < m; ++i)

2012-10-31 11:08:36 7740 2

原创 二叉树的层序遍历

问题来源:《编程之美》3.10 分层遍历二叉树给定一棵二叉树,要求分层遍历该二叉树,即从上到下按层次访问该树,每一层单独输出一行,每一层要求访问的顺序为从左到右。我们在遍历的过程中将该层节点的孩子节点压入一个队列,这样就可以实现从上到下一层一层地遍历该二叉树。C++的程序描述如下:void printNodeByLevel(BinTree root){ if(root

2012-10-27 16:43:51 32011 1

原创 根据二叉树的遍历结果重建二叉树

问题来源:《编程之美》3.9 重建二叉树给定一棵二叉树,假设每个节点都用唯一的字符来表示,具体结构如下:struct Node{ struct Node *pLeft; struct Node *pRight; char chValue;};假设已经有了前序遍历和中序遍历的结果,希望通过一个算法重建这棵树。给定函数的定义如下:void R

2012-10-25 12:04:38 2502

原创 求二叉树中节点的最大距离

问题来源:《编程之美》3.8 求二叉树节点的最大距离如果把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义"距离"为两个节点之间的个数。写一个程序求一棵二叉树中相距最远的两个节点之间的距离。如下图所示,粗箭头的边表示最长距离:树中相距最远的两个节点是A, B分析可知:对于二叉树,若要两个节点U,V相距最远,有两种情况:1,从U节点到V节点之间的路径经过

2012-10-24 15:36:16 15791 1

原创 c语言scanf缓冲区问题

今天在递归调用scanf函数获取输入的字符时发现的这个问题,之前也遇到过,现提出来记录一下。测试用例如下:#include #include int main(){ int n = 5; char c[n]; for(int i = 0; i < n; ++i) { scanf("%c", &c[i]); } print

2012-10-23 16:09:59 3783 1

原创 队列中取最大值操作问题

问题出处:《编程之美》3.7队列中取最大值操作问题假定有这样一个拥有3个操作的队列:1. EnQueue(v): 将v加入队列中2. DeQueue(): 使队列中的队首元素删除并返回此元素3. MaxElement(): 返回队列中的最大值请设计一种数据结构和算法,让MaxElement()操作的时间复杂度尽可能的低。常规思路:利用一个数组或者链表来存储队

2012-10-22 10:37:30 6851 1

转载 计算CoreText Line Height

转载:http://lists.apple.com/archives/quartz-dev/2008/Mar/msg00079.html

2012-09-29 08:51:52 1227

转载 CoreText基础-排版必修课

转载:http://www.dreamingwish.com/dream-2011/coretext-base-layout-compulsory.html

2012-09-29 08:31:12 715

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除