ios学习笔记-Lecture5:UITextView、ViewController Lifecycle、NSNotification
UITextView
- 属性
- 作用:和UILabel类似,都是现实文字的控件。不同的是,UITextView具有:多行显示、可选择-编辑、滑动等特性。
- 属性及方法
@property(nonatomic,readonly,retain) NSTextStorage *textStorage
- (void)addAttribute:(NSString *)name value:(id)value range:(NSRange)range;`
- (void)addAttributes:(NSDictionary *)attrs range:(NSRange)range;
- (void)removeAttribute:(NSString *)name range:(NSRange)range;
- 设定(属性)
- NSMutableAttributedString:NSTextStorage(IOS6之后生效)。
通过UIKit中得NSMutableAttributedString,来设定文字和属性。这里用到NSMutableAttributedString的子类:NSTextStorage - UIFont:设定字体
- UIColor:设定颜色
- NSMutableAttributedString:NSTextStorage(IOS6之后生效)。
- 实例
- 声明UITextView属性:
@property (weak, nonatomic) IBOutlet UITextView *body;
- 更改UITextView属性:
//更改字体轮廓线
[self.body.textStorage addAttributes:@{NSStrokeWidthAttributeName:@-3, NSStrokeColorAttributeName : [UIColor blackColor]} range:self.body.selectedRange];
//更改字体颜色
[self.body.textStorage addAttribute:NSForegroundColorAttributeName value:sender.backgroundColor range:self.body.selectedRange];
官方文档中得两段原文:
An NSAttributedString object manages character strings and associated sets of attributes (for example, font and kerning) that apply to individual characters or ranges of characters in the string.The Application Kit and UIKit also provide a subclass of NSMutableAttributedString, called NSTextStorage, to provide the storage for the extended text-handling system.
View Controller Lifecycle
- VC生命周期内会做哪些动作?动作如下:
- Instantiated 从故事板(storyboard)会做一些初始化的动作
- awakeFromNib
- outlets 设定
- viewDidLoad
- geometry设定(几何尺寸)
- viewWillAppear and viewWillDidAppear
- viewWillDisappar and viewDidDisappear
- didReceiveMemoryWaring(低内存警告)
NSNotification 广播(只是接收)
- 接收广播动作
- 注册并得到default广播中心:
[NSNotificationCenter defaultCenter]
- 发送信息以便于监听信息。
- 注册并得到default广播中心:
- (void)addObserver:(id)observer // you (the object to get notified)
selector:(SEL)methodToInvokeIfSomethingHappens
name:(NSString *)name // name of station (a constant somewhere)
object:(id)sender; // whose changes you’re interested in (nil is anyone’s)
关闭广播
- 方法1:
[center removeObserver:self];
[center removeObserver:self name:UIContentSizeCategoryDidChangeNotification object:nil];
- 方法2:
使用dealloc
:在其中实现[[NSNotificationCenter defaultCenter] removeObserver:self];
- 方法1:
使用时机
- 接收广播要在VC将要出现时(
viewWillAppear
)调用 - 关闭广播在VC将要关闭时(
viewWillDisappear
)调用 - 代码示例
- 接收广播要在VC将要出现时(
-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(preferredFontsChanged:) name:UIContentSizeCategoryDidChangeNotification object:nil];
}
-(void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[self usePreferredFonts];
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIContentSizeCategoryDidChangeNotification object:nil];
}
资源
本科完整代码示例: