1、UITextView:
该类与Label类类似,可显示多行,可以编辑内容,可以滚动查看内容;
包含属性NSTextStorage *textStorage,该类是NSMutableAttributedString的基类;修改该属性可以自动更新UITextView的内容;
包含属性UIFont *font,用于设置所有字符的字体;
NSTextContainer *textContainer和NSLayoutManager *layoutManager属性,用于设置文本的其他一些属性;
2、视图控制器的生命周期
* 创建:通过storyboard或者代码创建MVC;
* 设定显示视图接口(outlet)、几何变化、视图的显示和消失等操作;
* 随后调用viewDidLoad,可以进行下一步的初始化操作;只会被调用一次;注意不要再这里设定与界面尺寸相关的设置;
* 在视图显示之前调用viewWillAppear;该函数可以多次调用;
* 视图消失之前调用viewWillDisappear;处理保存当前视图的一些信息(如需要);
* 在布局变化前后,调用viewWill/DidLayoutSubviews处理相关信息;
* 自动旋转:shouldAutorotate返回yes,supportedInterfaceOrientations返回支持的方向;
* 内存不足警告时,调动didReceiveMemoryWarning进行处理,如释放掉当前没有显示的视图,将强引用对象设为nil等;
进一步讨论:
UIViewController继承自UIResponder,控制数据和视图的显示等操作。在创建ViewController的时候调用init方法的时候,在调用[super init]的时候自然会调用initWithNib方法;在创建视图控制器的时候,首先会判断当前视图控制器中是否存在视图;如果不存在,则会调用loadView方法;在该方法中进行判断视图产生的方法:自定义、storyboard还是空视图,在此之前,当前ViewController的视图还是nil;而当自定义视图、从storyboard中装载视图或者生产空视图完成后,ViewController便有其具体的值了。下图就是大致流程:
如果视图控制器的view尚不存在,那么在调用其getter方法的时候会调用loadView方法(注意,不应该直接在代码中调用loadview方法,而应覆盖该方法实现自己的内容);覆盖该方法的时候必须要自己创建视图供viewcontroller显示,或者调用[super loadView];
3、通知NSNotification
* 获取默认通知中心 :[NSNotificationCenter defaultCenter];
* 对某通知添加响应:addObserver: selector: name: object:;
* 关闭通知观察者:removeObserver;