// 加载类的时候调用,当程序一启动的时候就会调用
+ (void)load;
// 当类或者其他子类第一次使用的时候调用
+ (void)initialize;
// 获取当前应用下得所有导航条
+ (instancetype)appearance;
描述多个控制器选择用storyboard,描述一个控制器用xib。
在设置界面时,UIView和控制的选择,需要与客户交互用控制器,不需要交互用view。
用代码或者用storyboard创建控制器?界面很多就用代码,界面少就用storyboard。
什么时候用代码布局?什么时候用自动布局?固定的界面就用xib自动布局,不固定的用代码,但主要还是看怎么方便怎么用!
单张图片快速取消渲染:在Assets.xcassets选中图片 —> 属性栏 —> Render As (Original Image)。
在storyboard中,cell跳转到控制器,cell不显示小箭头:cell的属性栏 —> Accessory (None)。
在storyboard中,控制器隐藏导航条:控制器的属性栏 —> Hide Full Screen on Push。
在storyboard中,UIimageView拉伸图片的中间点:UIimageView属性栏 —> streching x(0.5) y(0.5)width(0) height(0) 注意:只有UIimageView可以拉伸,其他的控件不可以。
封装的时候,数据不要写死,应该给外面接口设置。
代码布局的时候不要写死,应该和父控件有比例。
在scallView中,图片尺寸不够高,不想整体都拉伸,就用代码修改一个方向的值,比如修改高的值。
布局子控件应该在layoutSubviews里进行,这里获取子控件的尺寸比较准确,这个方法也是用于布局子控件的,但是不要忘记写 [super layoutSubviews];。
引导页一般用绘图和核心动画比较多。
模拟器和真机的显示尺寸跟启动图片有关系。LaunchScreen的底层是截屏xib上面的内容成一张图片,最终启动展示的还是一张图片。Launch Screen File是Xcode6之后才有,当Launch Image Source和Launch Screen File同时写时,Launch Screen File优先级更高。
tabar控制器的view不是懒加载的,在创建控制器的时候就创建。
tabar上面的图片尺寸是有规定的,超过了就不展示。
设置导航条背景图片一定要在显示之前去设置,且forBarMetrics要选择UIBarMetricsDefault才有效。
做开发时,继承谁?先想想我想不想要里面的东西,想要谁就继承谁。
一个父控件的透明度改变了,它的子控件的透明度也改变。
设置父控件frame不会影响自控件的尺寸,但可用用自动布局使子控件的frame随父控件的改变而改变。
改尺寸有毛病。想到自动布局有问题。
想让系统的方法添加功能,就想到重写方法。
当设置一张图片不显示时,先检查图片名字对不对,图片存不存在,设置是否要求指定状态,是否有格式要求。
写项目的时候,为了以后修改方便,一些经常改的业务应该抽出来做不同的类。
在做界面的一些动画的时候,应该先做出功能,然后再通过transform和UIView做动画。
在iOS7之后只要在cell上添加textField都自动做了键盘处理,即cell在键盘上方,不被键盘覆盖。
只使用一次的属性,想到懒加载。
如果父视图不接收用户交互,那么其中的所有子视图,同样不支持用户交互!如果子视图所在位置,超出了父视图的有效范围,是不能交互的。
const和define 的区别
const:变量在使用多次进行计算的时候,只会用一个内存空间;引用常量最严谨的写法: exten const 类型 常量 ,使用举例如下
声明: const double PI = 3.141592653;
引用: exten const double PI;
define:在使用多次计算的时候,会开辟多个内存空间,进行存储用于计算的常数,使用举例如下
#define double PI 3.141592653