- 博客(112)
- 收藏
- 关注
原创 CATiledlayer
CATiledLayer功能简介CATiledLayer以图块(tile)为单位异步绘制图层内容,对超大尺寸图片或者只能在视图中显示一小部分的内容效果拔群,因为不用把内容完全载入内存就可以看到内容。把内容分解成固定大小的tile,当图块在屏幕上显示的时候,它会调用drawRect的方法进行绘制,只有可见的图块才绘制,这样就节约了处理时间和内存。相关属性产生模糊的根源是图层的细节层次(leve
2015-09-14 15:31:53
1944
原创 CALayer-2
CAScrollLayer功能简介CAScrollLayer显示一部分可滚动图层,该图层十分基础,无法直接响应用户的触摸操作,也不能直接检查可滚动图层的边界,故可避免越界无限滚动。 UIScrollView用的不是CAScrollLayer,而是直接改动图层边界。CAScrollLayer的滚动模式可设为水平、垂直或者二维//设置滚动模式scrollingViewLayer.scrollMo
2015-09-10 17:22:52
844
原创 CALayer常用属性整理
CALayer常用属性整理图层可以包含子图层。就像视图可以包含子视图,图层也可以有子图层,稍加利用就能打造漂亮的效果!图层属性自带动画效果。修改图层属性时,存在默认的动画效果,你也可以自定义动画行为。图层是轻量概念。相对视图而言,图层更加轻量,因此图层可以帮助提升性能。代码块代码块语法遵循标准markdown代码,例如: func setUpLayer() { //背景颜色
2015-09-10 11:42:40
1212
原创 Runtime-动态添加方法
objc_getAssociatedObject(self, _cmd) objc_setAssociatedObject(self, _cmd, value, OBJC_ASSOCIATION_RETAIN_NONATOMIC);_cmd相当于当前方法的指针,类似self
2015-07-24 12:02:16
921
原创 iOS全屏禁处
全屏禁触开启:[[UIApplicationsharedApplication] beginIgnoringInteractionEvents];全屏禁触关闭:[[UIApplicationsharedApplication] endIgnoringInteractionEvents];
2015-04-27 10:06:07
1289
原创 xcode5.1生成framework,支持arm64报错
错误如下:ld: Assertion failed: (_machoSection != 0), function machoSection, file /SourceCache/ld64/ld64-236.3/src/ld/ld.hpp, line 714.解决办法:在Build Settings 找到 MACH-O ,将Relocatable Object File 改为 St
2014-07-18 16:33:40
1434
原创 Iceberg使用
Iceberg是Mac下比较好用的pkg生成工具。在files中选择你想要存放(自己文件的文件夹),生成pkg后文件夹就会存储在设置的那个文件夹下。点击scripts选择pkg安装各个阶段所要执行脚本路径。
2014-07-16 17:56:25
4010
原创 Swift-Dictionary
1、字典写法Dictionary,KeyType是你想要储存的键,ValueType是你想要储存的值。唯一的限制就是KeyType必须是可哈希的,就是提供一个形式让它们自身是独立识别的Swift的所有基础类型都可以2、创建字典var airport :DictionaryString, String> = ["TYO": "Tokyo", "DUB": “Dublin"
2014-06-09 21:11:33
3648
原创 Swift-array
1、定义数组完整写法:Array简略语法:SomeType[] (建议写法)其中SomeType是你想要包含的类型。2、创建数组var shoppingList: String[] = ["Eggs", "Milk"]// 使用两个初始化参数来初始化shoppingListshoppinglist变量被定义为字符串(String)类型的数组,所以它只能储
2014-06-09 20:48:10
1332
原创 Swift-String
参考链接:http://letsswift.com/2014/06/collection-types/1、初始化一个空串var emptyString = "" var anotherEmptyString = String()2、检查字符串是否为空emptyString.isEmpty3、字符串可以直接相加(字符串由Character类型组成,也可以和Chara
2014-06-09 20:17:51
1437
转载 CGRectInset、CGRectOffset、等对比整理
1、CGRectInsetCGRect CGRectInset ( CGRect rect, CGFloat dx, CGFloat dy);该结构体的应用是以原rect为中心,再参考dx,dy,进行缩放或者放大。图中的每一个矩形都是以上一个矩形作为参考矩形。所以下一矩形(比如黄色矩形对绿色矩形来说是下一个矩形)都比上一个矩形要小。
2014-05-21 11:15:11
956
原创 iOS图形界面优化-Instrument
1、图形界面优化打开Instrument进行如下选择:左下角选项的作用:1、color blended layers :让你了解哪一个层(纹理)被标记成透明,也就是说,GPU需要做合成工作。合成不透明层要比透明的层工作量少很多,因为没有那么多的数学运算在里面。2、color misaligned images :检测像素是否对齐,当CALay
2014-05-20 13:52:30
1642
原创 iOS数组排序方法
1、利用数组的sortedArrayUsingComparator调用 NSComparator ,obj1和obj2指的数组中的对象NSComparator cmptr = ^(id obj1, id obj2){ if ([obj1 integerValue] > [obj2 integerValue]) { return (NSComparisonResult)
2014-05-20 10:28:21
1248
原创 NSProcessInfo-当前进程信息类
1、NSProcessInfo常用方法:+(NSProcessInfo*)processInfo //返回当前进程的信息-(NSArray*)arguments //以NSString对象数组的形式返回当前进程的参数-(NSDictionary *)environment //返回变量/值对词典,以描述当前的环境变量(比如PATH和HOME)及其值-(int)processI
2014-05-20 10:07:44
1279
原创 多参数函数的写法...NS_REQUIRES_NIL_TERMINATION
1、NS_REQUIRES_NIL_TERMINATION 是一个宏,用于编译时非nil结尾的检查。自定义不定参数的方法与C/C++一样,示例如下:
2014-05-12 09:39:43
2814
原创 取消延时函数
- (void) networkReachabilityDidUpdate:(NetworkReachability*)reachability{ [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(reachabilityChanged) object:nil];
2014-05-12 09:15:18
4154
原创 View转换成image
// 图层有双面,是否都显示,设置NO意思背面看不到 layer.doubleSided = NO;CGFloat scale = [[UIScreen mainScreen] scale]; CGSize size = CGSizeMake(backingLayer.frame.size.width*scale, backingLayer.frame.size
2014-05-10 16:30:13
1011
转载 CGRectOffset与CGRectInset的计算公式
CGRectOffset与CGRectInset的计算公式 2013-03-01 16:28:13| 分类: iphone|举报|字号 订阅(1)CGRectInsetCGRect CGRectInset ( CGRect rect, CGFloat dx, CGFloat dy);该结构体的应用是以原rect为中
2014-05-10 16:26:38
847
原创 CoreAnimation-Layer讲解
CALayer的属性contentsGravity允许你在图层的边界内容修改图层的contents图片的位置或者伸缩值。使用contentsGravity位置常量,你可以指定图片位于图层任何一个边界,比如位于图层的角落,或者图层边界的中心。然而当你使用位置常量的时候,contentsCenter属性会被忽略。表1列举了位置常量和他们相应的位置。表1 层的contentsGrav
2014-05-10 16:26:08
766
原创 手势
首先在view上添加手势 UIPanGestureRecognizerUIPanGestureRecognizer *panGes = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(goAnimation:)]; [self.view addGestureRecognizer:panGes
2014-05-09 19:33:25
775
原创 多线程GCD-补充
1、dispatch_sync(queue, block)同步提交job 2、dispatch_async (queue, block) 异步提交job 3、dispatch_after(time, queue, block) 同步延迟提交job其中第一个参数类型是dispatch_queue_t,就是一个表示队列的数据结构typedef struct dispatch_queue_s
2014-05-05 15:25:36
839
转载 assert用法总结
assert宏的原型定义在中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:#include void assert( int expression );assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。请看下面的程序清单badptr.c:#i
2014-04-30 09:14:06
744
转载 NSZone
NSZone是Apple用来分配和释放内存的一种方式,它不是一个对象,而是使用C结构存储了关于对象的内存管理的信息。基本上开发者是不需要去理会这个东西的,cocoa Application使用一个系统默认的NSZone来对应用的对象进行管理。那么在什么时候你会想要有一个自己控制的NSZone呢?当默认的NSZone里面管理了大量的对象的时候。这种时候,大量对象的释放可能会导致内存严重碎片化,coc
2014-04-29 15:19:48
876
转载 UIEdgeInsets 说明
设置 UILabel 和 UITextField 的 Padding 或 Insets2011-11-02 — UnmiiOS 的控件,只看到 UIButton 可以设置 Padding/Insets,即按钮上文字或图片与按钮边界的间隙,对与 CSS 来说叫做 Padding,在 iOS 中叫做 Insets,UIButton 设置 Insets 相应的属性如下:Confi
2014-04-28 15:35:37
1204
原创 在view扣除正方形
- (void)drawRect:(CGRect)rect{ [super drawRect:rect]; CGContextRef ctx = UIGraphicsGetCurrentContext(); CGContextSetRGBFillColor(ctx, .3, .3, .3, .1); CGContextFillRect(ctx, self.boun
2014-04-28 15:28:29
937
原创 GCD-semaphore(资源)-apply
NSArray *array = [[NSArray alloc]initWithObjects:@(1), @(1), @(1), @(1), @(1), nil]; //创建一个信号源 __block dispatch_semaphore_t sem = dispatch_semaphore_create(0); dispatch_queue_t queue = dis
2014-04-23 16:24:49
982
原创 RunTime-消息的拦截与替换
1、创建一个类Person声明一个方法:- (void)talk;2、在vc中实例化person对象 并实现:- (void)talk2;3、实现replace函数可以将person调用的talk替换成talk2代码如下:- (void)replace{ Person *man = [[Person alloc] init]; man.name = @"成
2014-04-23 15:30:04
1750
原创 Runtime-遍历类的成员名称和类型
1、创建一个Person类#import @interface Person : NSObject{ CGFloat height;}@property (nonatomic, strong) NSString *name;@property (nonatomic, assign) int age;@property (nonatomic, strong) N
2014-04-18 17:20:57
1797
原创 类外部访问私有成员变量
1、自己定义的一个类,里面有一个私有变量mt_,并且在初始化值为"call privite variable"。@interface Mobj : NSObject { @private NSString *mt_; } @end @implementation Mobj - (id)init { self =
2014-04-18 17:07:02
2064
原创 Runtime-动态创建类添加属性和方法
- (void)createClass{ Class MyClass = objc_allocateClassPair([NSObject class], "myclass", 0); //添加一个NSString的变量,第四个参数是对其方式,第五个参数是参数类型 if (class_addIvar(MyClass, "itest", sizeof(NSString *)
2014-04-18 17:00:06
2914
转载 OC - Runtime
一、Objective-C多态1.概念:相同接口,不同的实现来自不同类可以定义共享相同名称的方法。动态类型能使程序直到执行时才确定对象所属类型动态类型绑定能使程序直到执行时才确定要对对象调用的实际方法2.Objective-C不同于传统程序设计语言,它可以再运行时加入新的数据类型和新的程序模块:动态类型识别,动态绑定,动态加载3.id类型:通用指针类型,弱类型,编译时不
2014-04-18 14:54:38
1956
原创 iOS-Label中字符显示
有时可能会遇到这样的问题,一个label中设置的文本含有2种以上不同的格式,又不能把它拆解为两个label来显示,这时用NSMutableAttributedString可以很好的解决问题。示例如下:NSMutableAttributedString *text = [[NSMutableAttributedString alloc] initWithAttribute
2014-04-14 14:31:25
2576
原创 iPhone-NSAssert
NSAssert()函数。而且和NSLog()函数一样简单易用,代码如下: NSAssert(x!=0,@"错误信息");在表达式“x!=0”不成立时,程序就会抛出异常,并显示自定义的消息"x must not be zero",并同时显示出错的文件、代码和调用函数等信息,是一个程序追踪的很好手段。假设x!=0,不满足要求就提示reason-x must not be z
2014-04-14 14:24:14
720
转载 PUSH推送原理解析
转自:http://xiaolife.com/wordpress/an-introduce-to-iphone-push/第一部分:Push原理(以下绝大多数内容参考自、图片来自iPhone OS Reference Library)机制简介Push 的工作机制可以简单的概括为下图图中,Provider是指某个iPhone软件的Push服务器。 APNS
2014-04-11 09:27:21
2269
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人