![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
iOS
kingcodexl
这个作者很懒,什么都没留下…
展开
-
UIImageView帧动画
我们在使用UIImageView帧动画时会碰到加载到内存的图片不会自动释放,占用很多的内存,这时我们可能使用 UIImage imageWithContentsOfFile 并配合 imageView.animationImages = nil; 来清理不用的缓存动画图片。具体如下:UIImageView帧动画相关属性和方法:需要播放的序列帧图片数组(里面都是UIImage对象,会转载 2016-04-22 09:48:23 · 531 阅读 · 0 评论 -
UImageView翻转效果
感觉这个效果简单,但是还不错,主要还是用了在动画执行到一半的时候马上切换图片.就会达到这样的效果了.当然之前必须设置UIImageView可以点击userInteractionEnabled为YES关键代码如下:- (void)viewDidLoad{ [superviewDidLoad]; self.imageView.userInteractionE原创 2015-11-19 17:50:00 · 827 阅读 · 0 评论 -
Xcode 中 NSAssert() 的用法
关于 Xcode 中 NSAssert() 的用法 ,以及 assert() 与 NDEBUG assert(e) 是 C 语言里面的 宏 , 这个 宏的 定义 是 限制在 NDEBUG 条件 下的 ;在没有定义 NDEBUG 宏的时候 会替换成 一行 三位运算符表达式 e? 0 : printf ( 文件,行号,方法名); abort();如果定义了 NDEBUG宏转载 2015-11-19 17:16:25 · 631 阅读 · 0 评论 -
iOS 中文转拼音
之前做通讯录相关的一些App时,有一个比较常用的算法是将汉字转换成拼音。当时采用的做法是:将各个拼音段的首个汉字(按Unicode排序)做成两个数组,一个数组存拼音,另一个数组存拼音对应首个汉字的Unicode。如果要获取某个汉字的拼音,可以折半查找法找的对应拼音。最近无意间发现CFStringTransform这篇文章后,发现系统本身已经提供了一个这样的函数。CFStringTran转载 2015-11-20 15:06:25 · 494 阅读 · 0 评论 -
IOSnil/Nil/NULL的区别
1,nil:指向oc中对象的空指针Nil:指向oc中类的空指针NULL:指向其他类型的空指针,如一个c类型的内存指针NSNull:在集合对象中,表示空值的对象若obj为nil:[obj message]将返回NO,而不是NSException若obj为NSNull:[obj message]将抛出异常NSExceptionNSNu转载 2015-11-19 10:01:21 · 349 阅读 · 0 评论 -
卧槽!这么简单MD
Magical Record是什么在Cocoa中存在一种技术叫Core Data,用来对数据进行持久化,类似于Java世界中的Hibernate。在新建Cocoa Application/iOS Application的向导中,有一个选项是要不要使用Core Data,当启用以后你会发现在AppDelegate.m中添加了大量与Core Data相关的代码,但是你对大部分代码不知所以然转载 2015-11-03 11:22:23 · 461 阅读 · 0 评论 -
EdgeInsets Button
UIButton内有两个控件titleLabel和imageView,可以用来显示一个文本和图片,这里的图片区别于背景图片。给UIButton设置了title和image后,它们会图片在左边,文本在图片右边显示。它们两个做为一个整体依赖于button的contentHorizontalAlignment居左居右或居中显示。 1.当button.width转载 2015-11-18 17:07:57 · 260 阅读 · 0 评论 -
调整导航条上leftBarButtonItem和rightBarButtonItem与屏幕边界
我们发现,在设置navigationItem的leftBarButtonItem或rightBarButtonItem时,用CustomView初始化UIBarButtonItem,不论怎么设置CustomView的frame,添加到导航条上之后总是和屏幕边界有一定的间距(5pix),如何自由调整这个间距呢? 方法一: 考虑到CustomView一般转载 2015-11-18 16:48:53 · 1414 阅读 · 0 评论 -
一些值得学习的规范
条件语句 条件语句体应该总是被大括号包围。尽管有时候你可以不使用大括号(比如,条件语句体只有一行内容),但是这样做会带来问题隐患。比如,增加一行代码时,你可能会误以为它是 if 语句体里面的。此外,更危险的是,如果把 if 后面的那行代码注释掉,之后的一行代码会成为 if 语句里的代码。推荐:if (!error) { return success; } 不推荐:if (!error转载 2015-11-02 14:46:56 · 1211 阅读 · 0 评论 -
iOS框架结构图
Cocoa框架是iOS应用程序的基础,了解Cocoa框架,对开发iOS应用有很大的帮助。 1、Cocoa是什么? Cocoa是OS X和 iOS操作系统的程序的运行环境。 是什么因素使一个程序成为Cocoa程序呢?不是编程语言,因为在Cocoa开发中你可以使用各种语言;也不是开发工具,你可以在命令行上就可以创建Cocoa程序。Cocoa程序可以这么说,它是由一些对象组成,而这些对象的类最后都是转载 2015-11-02 14:45:04 · 1137 阅读 · 0 评论 -
学习资料-好久没写了
最近这几个周一直没有更新自己的博客.白天干活,时间真心不多.更重要的就是干的活没有多少涉及到比较值得投入时间去分析整理的.不过还有,养成了每天总结的习惯,分享下自己找到的一个非常值得学习的大神博客:http://www.cnblogs.com/kenshincui/p/3985090.html 从最基础的c语言一直讲到swift.非常值得一看.原创 2015-12-10 10:03:03 · 288 阅读 · 0 评论 -
UIView提供坐标系转换方法
// 将像素point由point所在视图转换到目标视图view中,返回在目标视图view中的像素值- (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view;// 将像素point从view中转换到当前视图中,返回在当前视图中的像素值- (CGPoint)convertPoint:(CGPoint)point from原创 2015-12-10 14:42:58 · 356 阅读 · 0 评论 -
UITableView - beginUpdates和endUpdates
1. beginUpdates方法和endUpdates方法是什么呢?这两个方法,是配合起来使用的,标记了一个tableView的动画块。分别代表动画的开始开始和结束。两者成对出现,可以嵌套使用。一般,在添加,删除,选择 tableView中使用,并实现动画效果。在动画块内,不建议使用reloadData方法,如果使用,会影响动画。如果我们的UITableV转载 2015-11-17 19:29:16 · 329 阅读 · 0 评论 -
Objective-C 三大新特性 nullabilty generics __kindof
NullabilityLightweight Generics *__kindofNullability然而 Nullability 并不算新特性了,从上一个版本的 llvm 6.1 (Xcode 6.3) 就已经支持。这个简版的 Optional ,没有 Swift 中 ? 和 ! 语法糖的支持,在 Objective-C 中就显得非常啰嗦了:转载 2015-11-17 09:43:14 · 401 阅读 · 0 评论 -
绘制阴影 优化 + UIImage 性能优化
在 iOS 开发中,通过设置 layer 的 shadowColor、shadowOpacity、shadowOffset、shadowRadius 几个属性可以很方便的为 UIView 添加阴影效果。但是前段时间碰到一个问题,在添加了阴影后,会出现动画卡顿的现象。在一番 Google 以后找到了解决方案,需要为阴影指定路径,即设置 layer 的 shadowPath 属性。例如:转载 2015-11-20 16:39:19 · 585 阅读 · 0 评论 -
提示用户打开某些权限 (打开设置页面)
NSURL * url = [NSURLURLWithString:UIApplicationOpenSettingsURLString]; if ([[UIApplicationsharedApplication] canOpenURL:url]) {原创 2015-12-28 15:06:50 · 465 阅读 · 0 评论 -
UIView的setNeedsLayout, layoutIfNeeded 和 layoutSubviews 方法之间的关系解释
layoutSubviews总结ios layout机制相关方法- (CGSize)sizeThatFits:(CGSize)size- (void)sizeToFit——————-- (void)layoutSubviews- (void)layoutIfNeeded- (void)setNeedsLayout——————–- (void)转载 2015-12-14 10:06:08 · 269 阅读 · 0 评论 -
__block 与 __weak的区别理解
Blocks理解:Blocks可以访问局部变量,但是不能修改如果修改局部变量,需要加__block __block int multiplier = 7; int (^myBlock)(int) = ^(int num) { multiplier ++;//这样就可以了 return num * multiplier;原创 2016-05-15 21:31:34 · 519 阅读 · 0 评论 -
hexo + github 个人博客
如何搭建一个独立博客——简明Github Pages与Hexo教程字数5191 阅读64717 评论55 喜欢309摘要:这是一篇很详尽的独立博客搭建教程,里面介绍了域名注册、DNS设置、github和Hexo设置等过程,这是我写得最长的一篇教程。我想将我搭建独立博客的过程在一篇文章中尽可能详细地写出来,希望能给后来者一个明确的指引,同时用这篇教程开篇,正式开始我的第八大洲之旅转载 2016-04-11 17:53:46 · 710 阅读 · 0 评论 -
最快让你上手ReactiveCocoa之进阶篇
1.ReactiveCocoa常见操作方法介绍。1.1 ReactiveCocoa操作须知所有的信号(RACSignal)都可以进行操作处理,因为所有操作方法都定义在RACStream.h中,因此只要继承RACStream就有了操作处理方法。1.2 ReactiveCocoa操作思想运用的是Hook(钩子)思想,Hook是一种用于改变API(应用程序编程接口:方转载 2016-04-13 11:19:55 · 321 阅读 · 0 评论 -
最快让你上手ReactiveCocoa之基础篇
前言很多blog都说ReactiveCocoa好用,然后各种秀自己如何灵活运用ReactiveCocoa,但是感觉真正缺少的是一篇如何学习ReactiveCocoa的文章,小编看了很多篇都没看出怎么使用ReactiveCocoa,于是决定自己写一遍关于学习ReactiveCocoa的文章,本文主要针对如何从零开始学习ReactiveCocoa,这里非常感谢3个人(支点的雷纯锋,came转载 2016-04-13 11:06:31 · 618 阅读 · 0 评论 -
Xcode基本使用
1、统计Xcode项目代码行数 1 打开终端。 2 用ls和cd进到你项目的路径。 3 输入下面的指令: grep -r "\n" classes | wc -l (classes,为项目文件所在文件夹)(或者用grep -d recurse "\n" classes | wc -l )这里是使用unix命转载 2016-02-23 19:48:47 · 1277 阅读 · 0 评论 -
iOS7的适配小问题, uiscrollview中view向下偏移64
1,首先//定义宏,判断ios7#define IOS7 [[[UIDevice currentDevice]systemVersion] floatValue] >= 7.0 //添加代码if (IOS7){ self.edgesForExtendedLayout = UIRectEdgeNone;转载 2016-03-03 09:41:45 · 1149 阅读 · 0 评论 -
整理一些iOS常用到的代码片段
1:截图(Layer)- (UIImage *)snapshotImage { UIGraphicsBeginImageContextWithOptions(self.bounds.size,self.opaque, 0); CGContextRef context =UIGraphicsGetCurrentContext(); [selfrend原创 2016-02-02 11:32:10 · 698 阅读 · 0 评论 -
去掉tableview中section的headerview粘性
ios的tableview中headerview会随着滑动黏在上方,直到新的sectionheaderview出现并替换掉,这是个好的特性,但是在为了实现PM某些需求的时候,又不是很符合心意,在网上查了下,找到了其解决方法:// 去掉UItableview headerview黏性(sticky)- (void)scrollViewDidScroll:(UIScrollView转载 2016-01-11 18:21:08 · 435 阅读 · 0 评论 -
iOS多线程复习(只是熟悉而已)
- (void)asyTest{ // 创建线程 NSThread *thread = [[NSThreadalloc]initWithTarget:self selector:@selector(test)原创 2016-01-11 16:28:24 · 294 阅读 · 0 评论 -
改变UITextField Placehold位置颜色
自定义#import "CSTextField.h"@implementation CSTextField- (id)initWithFrame:(CGRect)frame{ self = [super initWithFrame:frame]; if (self) { // Initialization code }原创 2016-01-21 21:23:38 · 1311 阅读 · 0 评论 -
NSScanner类的基本用法
NSScanner是一个类,用于在字符串中扫描指定的字符,尤其是把它们翻译/转换为数字和别的字符串。可以在创建NSScaner时指定它的string属性,然后scanner会按照你的要求从头到尾地扫描这个字符串的每个字符。 创建一个Scanner NSScanner是一个类族, NSScanner是其中公开的一类。通常,可以用scannerWithString:或localized转载 2016-01-05 14:57:11 · 288 阅读 · 0 评论 -
用cocoapods打包APP时,报错,提示没有权限解决方法
在钥匙串里找到对应签名的秘钥,双击,更改访问控制即可原创 2015-12-31 17:39:51 · 699 阅读 · 0 评论 -
生成随机数三种方式 OC
1)、arc4random() 比较精确不需要生成随即种子 使用方法 : 通过arc4random() 获取0到x-1之间的整数的代码如下: int value = arc4random() % x; 获取1到x之间的整数的代码如下:转载 2015-12-11 13:36:04 · 12862 阅读 · 0 评论 -
点击空白处隐藏键盘的几种方法
IOS开发中经常要用到输入框,默认情况下点击输入框就会弹出键盘,但是必须要实现输入框return的委托方法才能取消键盘的显示,对于用户体验来说很不友好,我们可以实现点击键盘以外的空白区域来将键盘隐藏,以下我总结出了几种隐藏键盘的方法:首先说明两种可以让键盘隐藏的Method:1、[view endEditing:YES] 这个方法可以让整个view取消第一转载 2015-11-16 17:29:26 · 1044 阅读 · 0 评论 -
iOS 保持界面流畅的技巧
来源:http://blog.ibireme.com/2015/11/12/smooth_user_interfaces_for_ios/这篇文章会非常详细的分析 iOS 界面构建中的各种性能问题以及对应的解决思路,同时给出一个开源的微博列表实现,通过实际的代码展示如何构建流畅的交互。Index演示项目屏幕显示图像的原理卡顿产生的原因和解决方案CPU 资转载 2015-11-22 21:06:49 · 1011 阅读 · 0 评论 -
一个简单的创建圆角图像的UIImage扩展实现
在iOS开发中经常需要用到圆角图像。简单搜索一下就能找到很多创建圆角图像的实现代码。我在Stack Overflow上找到了一段代码,略微修改了一下,写了个简单的Category方法,可以用来创建圆角图像。代码如下:12345678910111213141516171819202122232425262728转载 2015-11-20 23:16:19 · 381 阅读 · 0 评论 -
由AVPlayer引发出来KVC的坑(KVC使用一定得注意)
做一个视频启动页其实比较简单,自己为了丰富一下功能,就封装了一套AVPlayer,当自己把一切都搞定了之后,调试 草,跳过视频就进行操作就直接崩了.搞了一个下午.最后定为为题的原因.用KVO观察了变化,但是后面移除的实际不正确.导致根本就没移除.Be sure to invoke removeObserver: or removeObserver:name:object: before notif原创 2015-11-06 10:48:20 · 821 阅读 · 0 评论 -
.a 静态库
通常在项目中使用静态库的时候都会有两个版本,一个用于模拟器,一个用于真机,因为Mac和iPhone的CPU不同,才造成了这种情况。 为了模拟器与真机之间切换调试的方便,制作通用版本非常有必要。 现在有两个版本的静态库libSQLite_i386.a(模拟器)与libSQLite_arm.a(真机)。 1、打开终端,进入到这两个文件所在的目录; 2、执行:lipo -create libSQL原创 2015-09-17 20:37:41 · 291 阅读 · 0 评论 -
UIAppearance协议
苹果通过两个协议(UIAppearance和UIAppearanceContainer)规范了对许多UIKit控件定制的支持。所有遵循UIAppearance协议的UI控件通过定制都可以呈现各种外观。不仅如此,UIAppearance协议甚至允许开发者基于控件所属的区域指定不同的外观。也就是说,当某个控件包含在特定视图中时,可以指定它的外观(如UIBarButtonItem的tintColor)。也原创 2015-09-16 15:49:05 · 507 阅读 · 0 评论 -
沙盒目录
documents,tmp,app,Library。(NSHomeDirectory()),手动保存的文件在documents文件里Nsuserdefaults保存的文件在tmp文件夹里1、Documents 目录:您应该将所有de应用程序数据文件写入到这个目录下。这个目录用于存储用户数据或其它应该定期备份的信息。2、AppName.app 目录转载 2015-11-05 09:54:45 · 321 阅读 · 0 评论 -
简单理解——tableview的重用机制
有个比较好的办法来研究系统框架里面的某些东西。通过查看头文件的方式。重用实现分析 查看UITableView头文件,会找到 NSMutableArray * visiableCells,和 NSMutableDictnery* reusableTableCells两个结构。visiableCells内保存当前显示的cells, reusableTableCells保存可重用的cells。*原创 2015-09-16 17:36:22 · 1055 阅读 · 0 评论 -
复习loadView,ViewDidLoad,initWithNibName,awakeFromNib
转载,原地址为:http://jianyu996.blog.163.com/blog/static/11211455520131226840879/请尊重原创:1,无论XIB还是代码创建都会调用loadView方法。self.view为nil时才会被调用。 手工创建视图时,loadView被调用时self.view还为nil。一般在该方法中手工定制view。转载 2015-11-04 10:55:52 · 274 阅读 · 0 评论 -
iOS 基础复习
iOS 基础复习1、修改对象的结构体成员在OC中,不允许直接修改“对象”的“结构体属性”的“成员”,但是允许修改“对象”的“结构体属性”2、修改结构体属性的成员方法如下:(1)使用临时变量记录对象的结构体属性(2) 修改临时变量的属性(3)将临时变量重新设置给对象的结构体属性3. 在程序开发中需要避免出现魔法数字(Magic Number)使用枚举类型,可以避免在程序中出现魔法数字(1)枚举类型实质原创 2015-09-14 15:01:00 · 295 阅读 · 0 评论