UITableViewCell自动调整高度相关资料整理 这是本人研究UITableViewCell自适应高度时看过的资料,集中提供给大家,省的到处找了。首推:http://codingobjc.com/blog/2014/10/15/shi-yong-autolayoutshi-xian-uitableviewde-celldong-tai-bu-ju-he-ke-bian-xing-gao/这是网友翻译stackoverflow上的,还有相关
iOS自动布局-Auto Layout 本来想写一下Auto Layout的使用来着,后来发现网上已经有好多资料了,我再重复一遍没什么意思,给大家贴几个链接算了~iOS6之后为了进行更加复杂的布局要求,苹果推出Auto Layout,每次添加约束都是一个NSLayoutConstraint对象,但是代码量太大,苹果又出了一个奇葩一般的VFL语言,写着不爽看着更不爽。但是总有牛人想出好办法,github上有一个开源库(Masonry)
iOS自动布局-Autoresizing iOS下自动布局有两种技术可用:Autoresizing和Auto Layout。该文先说下Autoresizing,接下来再写一篇文章分析Auto Layout。Autoresizing是子视图相对父视图的布局,子视图之间不能添加布局约束,这也是Autoresizing的局限性。所以在iOS6+中引入了更加复杂、更加强大的Auto Layout。Autoresizing可以通过可视化界面调整
Core Animation 浅析 Core Animation 浅析(理解有问题的地方,欢迎指出来)1.层(CALayer)CALayer是所有界面元素的基类,包括动画。一般情况下我们在绘制界面的时候都是使用的UIView或者UIView的子类,比如我们想添加一张图片用UIImageView,显示一大段文字用UITextField等。UIView的直接父类是:UIResponder,且UIView中有个属性:@pr
Base64编码原理解析 网上关于Base64编解码原理的资料已经很多了,这里只是自己梳理一下知识点而已。如有不确,望批评指正。概念:Bas64编码顾名思义,就是用64个可显示字符来显示二进制的编码方式。64个字符正好需要6个bit位来编码,也就是说Base64每6bit作为一个单元。4*6=24个bit正好是3个byte。所以,Base64都是每3个字符进行编码最终结果为4个可显示Base64字符。当需要
Core Animation 官方文档第五章(高级动画技巧) 总结:1.动画有基于属性的动画(property-based),比如:hidden、alpha等属性;还有一种就是帧动画。帧动画提供的更多高级的动画,比如move、push等等。并且这些动画之间可以通过定时(Timing)使动画有执行的顺序,进行这些操作的方法和属性在 CAMediaTiming协议中,而 CAAnimation 和CALayer两个类已经遵循了该类,所以你可以直接操作。每一个
Core Animation 官方文档第四章(建立图层的层次结构) 总结:图层的层次结构非常类似UIView的层次结果,并且对layers的管理也类似UIView。比如在图层上添加一个图层:addSublayer:;删除图层:removeFromSuperlayer,都和UIView上类似。同时,图层如果要显示出来必须设置它的大小bounds、position。默认情况下,子图层如果超出父图层,多出来的部分也会显示出来,如果想给子图层设置一个边框使它不会超过这
Core Animation 官方文档第三章(动画图层内容) 总结:在图层上可以添加动画,隐式动画不可以停止,显式动画可以停止、移除。在显式动画中停止动画通过删除动画来实现,移除的过程中会有一个跳动的效果,可以通过检测动画最后的状态值,然后赋给layer tree中相关的对象。如果有很多动画要在一个layer上执行,可以把所有的动画通过group(CAAnimationGroup)的形式整合到一起。并且动画的执行状态是可以检测,有两种方法:一种是bloc
Core Animation 官方文档第二章(设置图层对象) 总结:默认情况下,UIView会帮你创建一个CALayer对象的图层,通常情况下你也不需要改变它。但是在一些高级动画中,或者使用其他类型图层看起来更合适的时候,如果你想替换掉原来的layers,可以通过下面的这个方法:+ (Class) layerClass { return [CAMetalLayer class];}这样,你的UIView甚至实现了定制,你可以用这种方法自己写一
Core Animation 官方文档第一章(基础核心动画) 总结:核心动画最重要的是图层(layers),UIView是对layers的封装,只不过UIView是有用户交互的,layers是没有响应链的。layers的作用是管理bitmap的一些状态信息,比如上面加一个图片,它会把图片缓存成bitmap的格式,便于在动画时的硬件加速渲染等操作。在app的主layers中,layers只是一个model object,负责管理要显示的对象比如你添加上去的
Autolayout使用以及和springs and structs优劣 iOS自动布局,随着苹果更多设备的发售,autolayout已经是大势所趋,下面的文章适合入门学习。教程一、http://www.cnblogs.com/zer0Black/p/3977134.html;教程二、http://www.cnblogs.com/zer0Black/p/3977288.html。
iOS键盘遮挡解决方案 iOS中键盘遮挡问题很常见,网上有很多解决方案,现在要说的这种也是其中一种。很多网友的解决方案很局限,没考虑适配等问题。这里介绍的解决方案是通过Apple系统提供的通知来解决问题,NSNotification中包含了键盘的一些信息,这个可以充分利用之。首先监听以下两个通知,系统会负责发送通知,当然你自己也可以发送。// 监听键盘的即将显示事件. UIKeyboardWillShowNo
iOS计算NSString的size - (CGSize)sizeAboutMessage:(NSString *)message{ CGFloat version = [[[UIDevice currentDevice] systemVersion] floatValue]; CGSize size; if (version >= 7.0) { NSDictionary *dic = [NS
UITableView知识点 UITableView有两种显示方式:UITableViewStylePlain、UITableViewStyleGrouped。UITableViewStylePlain的section默认不显示head和footer,只有进行设置才会显示出来;UITableViewStyleGrouped的section默认显示head和footer如果想要隐藏需要手动隐藏。但是UITableView
iOS数据持久化方法 --->梳理一下知识点,比较粗糙,如果有认知上的错误非常欢迎指出。iOS数据持久化有4种方法:普通的文件、SQLite、plist、归档。(本质都是磁盘上的文件)SQLite:也是一种保存在磁盘上的格式化的文件,好处在于查找、存储方便。不像归档,必须每次全部解当,然后再一次性归档。File:不存在文件格式,就是数据流,无法进行查找、删除等操作。通过NSFileHandle类配合
UIViewController中的一个坑 UIViewController中有个属性title,还有一个navigationItem。但是在naivgationItem中也有个title属性,每次当你设置了UIViewController中的title的时候,navigationItem中的title也跟着变化,它俩是有关系的。因为iOS是闭源的所以我们也看不了源码是怎么实现的,但是经过试验基本可以猜测:官方重写了UIViewContro
iOS控制权限关键字 1.@private 只能当前类的实例对象可以访问,它的子类也不能访问。2.@protected(oc默认权限) 不能在类或者类的子类之外的函数或者对象中访问。只能被当前类的对象访问或者子类的对象也可以直接访问,不需要经过父类的方法去访问.3.@public 任何地方都可以被访问.4@package 这个一般用的比较少,很多教程上也没
#include #import @class区别 1.#include一般用在包含C/C++头文件,但是容易引起交叉编译,头文件可能会造成相互引用. 比如:a 包含 b,b 包含 a。解决办法:在头文件开头写#pragram once
NSFileHandle简析以及实现超大文件的复制 1.NSFileHandle 主要函数介绍:@interface NSFileHandle : NSObject //NSFileHandle默认打开文件时,读写指针在文件开头. - (NSData *)availableData;//返回文件有效字符长度(bytes),有个问题是,如果在超大文件中用该方法,会导致电脑卡死.该方法会将文件读入内存,然后计算长度,并且此时,文件句柄指
NSArray简析 1.数组抽取//数组抽取,由一个数组的一部分抽取出一个新的数组NSArray * array=[[NSArray alloc]initWithObjects:@"one",@"two",@"three",@"four", nil];NSArray * array1 = [array objectsAtIndexes:[NSIndexSet indexSetWithIndexesInRang