(5/18)重学Standford_iOS7开发_视图控制器生命周期_课程笔记
第五课:
1、UITextView
@property (nonatomic, readonly) NSTextStorage *textStorage;//注意为只读属性,因此不能直接更改内容,NSTextStorage为NSMutableAttributeString的子类,因此可以更改字符串属性内容(而非字符串)
//例如,添加属性
[self.body.textStorage addAttribute:NSForegroundColorAttributeName
value:sender.backgroundColor
range:self.body.selectedRange]; @property (nonatomic, strong) UIFont *font;
//例如添加字体
self.body.font = [UIFont preferredFontForTextStyle:UIFontTextStyleBody];
self.headLine.font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline]; //文本布局功能,如图文混排等
@property (readonly) NSTextContainer *textContainer;
@property (readonly) NSLayoutManager *layoutManager;
2、View Controller Lifecycle
- (instancetype)initWithNibName:(NSString *)name bundle:(NSBundle *)bundle;//非storyboard加载方式,指定初始化器
- (void)awakeFromNib;//从storyboard中加载UI时调用,此时未设置输出口 //设置输出口 - (void)viewDidLoad;//可以放置控制器初始化代码(一次性),如init。不可放置与几何相关的代码,此时控制器中的UI边界未确定 //确定几何布局
//当视图frame发生变化时就会被调用,此处适合添加与几何相关的代码
- (void)viewWillLayoutSubviews;
- (void)viewDidLayoutSubviews;
//其他关于屏幕旋转等API... - (void)viewWillAppear:(BOOL)animated;//生命周期中可能会被反复调用,因此不能放置一次性初始化内容
- (void)viewDidAppear:(BOOL)animated;
- (void)viewWillDisappear:(BOOL)animated;//可以进行一些当前数据保存工作
- (void)viewDidDisappear:(BOOL)animated; - (void)didReceiveMemoryWarning;//系统在内存不足时调用
3、NSNotification
(本节课只涉及到如何收听通知)
[NSNotificationCenter defaultCenter];//获取defaultCenter //添加观察者
- (void)addObserver:(id)observer //接收通知的对象
selector:(SEL)methodToInvokeIfSomethingHappens
name:(NSString *)name //广播名
object:(id)sender; //监听的广播对象,nil指监听所有对象 //接收到通知后调用方法
- (void)methodToInvokeIfSomethingHappens:(NSNotification *)notification
{
notification.name // the name passed above
notification.object //发送广播的对象
notification.userInfo // notification-specific information about what happened(取决于发送者)
} //结束收听通知,通常放于视图从界面消失时
[center removeObserver:self];
[center removeObserver:self name:UIContentSizeCategoryDidChangeNotification object:nil];
通知实例(系统设置字体改变)
//视图出现在屏幕上注册通知
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(preferredFontChanged:) name:UIContentSizeCategoryDidChangeNotification object:nil];
} //通知出现时调用方法
- (void)preferredFontChanged:(NSNotification *)notification
{
[self usePreferredFonts];
} //重新设置字体
- (void)usePreferredFonts
{
self.body.font = [UIFont preferredFontForTextStyle:UIFontTextStyleBody];
self.headLine.font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline];
} //视图离开界面是移除通知
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[[NSNotificationCenter defaultCenter] removeObserver:self
name:UIContentSizeCategoryDidChangeNotification
object:nil];
4、作业
无
课程示例Attributor源码:https://github.com/NSLogMeng/Stanford_iOS7_Study/commit/242826c2220afe978bc1d060c2dff19578a835c9
课程视频地址:网易公开课:http://open.163.com/movie/2014/1/L/H/M9H7S9F1H_M9H801GLH.html
或者iTunes U搜索standford课程
(5/18)重学Standford_iOS7开发_视图控制器生命周期_课程笔记的更多相关文章
- (7/18)重学Standford_iOS7开发_视图、绘制、手势识别_课程笔记
第七课: 1.View 一般来说,视图是一个构造块,代表屏幕上一块矩形区域,定义了一个坐标空间,并在其中绘制及添加触控事件等. ①视图的层级关系 一个视图只能有一个父视图,可以有多个子视图 - ( - ...
- (6/18)重学Standford_iOS7开发_控制器多态性、导航控制器、选项卡栏控制器_课程笔记
终于有时间跟新了,两周时间复(yu)习(xi)了5门考试累觉不爱...... ------------------------------------------------------------- ...
- (1/18)重学Standford_iOS7开发_iOS概述_课程笔记
写在前面:上次学习课程对iOS还是一知半解,由于缺乏实践,看公开课的视频有时不能很好地领会知识.带着问题去学习永远是最好的方法,接触一段时间iOS开发以后再来看斯坦福iOS公开课,又会有许多新的发现, ...
- (8/18)重学Standford_iOS7开发_协议、block、动画_课程笔记
第八课: 1.协议 另一种安全处理id类型的方式如:id <MyProtocol> obj a.声明 //协议一般放于.h文件中或者在类的.h文件中 @protocol Foo <X ...
- (9/18)重学Standford_iOS7开发_动画、自动布局_课程笔记
最近开始实习,没多少时间更新了=_= 第九课: 1.上节课demo:Dropit完整实现 https://github.com/NSLogMeng/Stanford_iOS7_Study/commit ...
- (4/18)重学Standford_iOS7开发_框架和带属性字符串_课程笔记
第四课(干货课): (最近要复习考试,有点略跟不上节奏,这节课的内容还是比较重要的,仔细理解掌握对今后的编程会有很大影响) 本节课主要涉及到Foundation和UIKit框架,基本都是概念与API知 ...
- (3/18)重学Standford_iOS7开发_Objective-C_课程笔记
第三课: 本节课主要是游戏实现的demo,因此我将把课程中简单的几个编程技巧提取出来,重点介绍如何自己实现作业中的要求. 纸牌游戏实现: ①游戏的进行是模型的一部分(理解什么是模型:Model = W ...
- (2/18)重学Standford_iOS7开发_Xcode_课程笔记
第二课: 1.惰性初始化 -(ObjectType *)example { f(!_example) example =[[ObjectType alloc] init]; return _examp ...
- 玩转iOS开发 - 视图控制器生命周期
视图控制器生命周期
随机推荐
- gulp最佳实践(包含js,css,html预编译,合并,压缩,浏览器自动刷新)
gulp是基于流的自动化构建工具官方网址:http://www.gulpjs.com.cn/ 一.安装需要的模块 1.新建package.json,输入下面的内容 { "name" ...
- “父窗口拖动的时候Popup不随着父窗口移动”问题的解决方案
我们用WPF用的Popup时候会发现,当 StaysOpen=True 的时候,因为Popup不会消失,在父窗口移走的时候Popup仍旧在原地...作者在国外网站上无意间发现了这个解决方案,拿出来给大 ...
- linux下测试磁盘的读写IO速度【转】
Reference1:http://server.chinabyte.com/495/12361995.shtmlReference2:https://www.deleak.com/blog/2011 ...
- 【转】.Net程序员玩转Android系列之三~快速上手
原文:http://www.cnblogs.com/HouZhiHouJueBlogs/p/3962122.html 快速环境搭建和Hello World 第一步:JAVA SDK(JDK)的安装: ...
- shell 基础 $(cd `dirname $0`;pwd)
$ cd `dirname $0` 和PWD%/* shell变量的一些特殊用法 在命令行状态下单纯执行 $ cd `dirname $0` 是毫无意义的.因为他返回当前路径的"." ...
- DevOps on Android: 加速 App 从代码到上线
DevOps 是一个众所周知的开发方法,其主要目的是自动化软件交付.事实上,DevOps 的目标是不断的测试,代码质量,功能开发,更容易维护版本.因此,DevOps 的一个最终目标是为开发者进行快速, ...
- 【Uvalive 2531】 The K-League (最大流-类似公平分配问题)
[题意] 有n个队伍进行比赛,每场比赛,恰好有一支队伍取胜.一支队伍败.每个队伍需要打的比赛场数相同,给你每个队伍目前已经赢得场数和输得场数,再给你一个矩阵,第 i 行第 j 列 表示队伍 i 和队伍 ...
- Eclipse怎样导入github上的项目
国外有些比较好的源代码网站,经常需要从这些网站上导入项目到eclipse中,我最近就发现github.com这个网站上有很多开源项目.这里就以从github网站上导入项目到eclipse中为例来详细的 ...
- poj1436 Horizontally Visible Segments
这是一个区间更新的题目,先将区间放大两倍,至于为什么要放大可以这样解释,按照从左到右有4个区间,y值是[1,5],[1,2],[3,4],[1,4]如果不放大的话,查询[1,4]区间和前面区间的”可见 ...
- [wikioi]数的划分
http://wikioi.com/problem/1039/ 划分型DP.最终的思路是,F[i][j]表示i分成j份,如果分出来的有1,那么去掉1,就是F[i-1][j-1]:如果没有1,那就都减1 ...