1、延迟操作:
[self performSelector:@selector(nextQuestion) withObject:nil afterDelay:0.5];
2、创建控制器系统会先调initWithNibName方法
3、storyboard创建控制器
UIViewController *vc = [storyboard instantiateInitialViewController];
MJTwoViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@“pink"];
4、视图生命周期的一些方法:
didMoveToSuperview
didAddSubview
layoutSubviews
5、 // 1.开始动画
[UIView beginAnimations:nil context:nil];
// 动画持续2秒
[UIView setAnimationDuration:2.0];
[UIView commitAnimations];
// 2.动画
[UIView animateWithDuration:0.5 animations:^{
label.alpha = 0.5;
} completion:^(BOOL finished) {
[UIView animateWithDuration:0.5 delay:0.5 options:UIViewAnimationOptionCurveLinear animations:^{
label.alpha = 0.0;
} completion:^(BOOL finished) {
[label removeFromSuperview];
}];
}];
6、创建cell
如果cell是通过storyboard或者xib创建的,就不可能会调用initWithStyle,而是调用awakeFromNib
这个方法来初始化cell
如果cell是通过手写代码创建,才会调用initWithStyle
这个方法来初始化cell
7、// 跳转 -- 执行login2contacts这个segue
[self performSegueWithIdentifier:@“login2contacts” sender:nil];
//跳转之前会调用
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
8、ActionSheet:
UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:@"确定要注销?" delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:@"确定" otherButtonTitles:nil, nil];
[sheet showInView:self.view];
9、通知
// 监听通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification object:self.nameField];
//移除通知
[[NSNotificationCenter defaultCenter] removeObserver:self];
10、文档路径
// 1.获得沙盒根路径
NSString *home = NSHomeDirectory();
// 2.document路径
NSString *docPath = [home stringByAppendingPathComponent:@“Documents"];
11、偏好设置
1 -> 保存数据
// 1.获得沙盒根路径
NSString *home = NSHomeDirectory();
// 2.document路径
NSString *docPath = [home stringByAppendingPathComponent:@“Documents”];
// 3.立刻同步
[defaults synchronize];
2 ->读取数据
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *account = [defaults objectForKey:@"account"];
BOOL autoLogin = [defaults boolForKey:@“auto_login"];
12、对象归档
1 ->controller:
// 1.归档模型对象
// 1.1.获得Documents的全路径
NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
// 1.2.获得文件的全路径
NSString *path = [doc stringByAppendingPathComponent:@"stu.data"];
// 1.3.将对象归档
[NSKeyedArchiver archiveRootObject:stu toFile:path];
// 2.读取归档模型对象
// 1.1获得Documents的全路径
NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
// 1.2获得文件的全路径
NSString *path = [doc stringByAppendingPathComponent:@"stu.data"];
// 1.3从文件中读取MJStudent对象
Student *stu = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
2 ->student类:遵守<NSCoding>协议
实现两个协议方法:/**
* 将某个对象写入文件时会调用
* 在这个方法中说清楚哪些属性需要存储
*/
- (void)encodeWithCoder:(NSCoder *)encoder
{
[encoder encodeObject:self.no forKey:@"no"];
[encoder encodeInt:self.age forKey:@"age"];
[encoder encodeDouble:self.height forKey:@"height"];
}
/**
* 从文件中解析对象时会调用
* 在这个方法中说清楚哪些属性需要存储
*/
- (id)initWithCoder:(NSCoder *)decoder
{
if (self = [super init]) {
// 读取文件的内容
self.no = [decoder decodeObjectForKey:@"no"];
self.age = [decoder decodeIntForKey:@"age"];
self.height = [decoder decodeDoubleForKey:@"height"];
}
return self;
}
13、读取xib
// 读取xib文件(会创建xib中的描述的所有对象,并且按顺序放到数组中返回)
NSArray *objs = [bundle loadNibNamed:@“MJAppView" owner:nil options:nil];
14、label.layer.cornerRadius = 5;
label.clipsToBounds = YES;
表格不允许选中
self.tableView.allowsSelection = NO;
表格自动滚动表格到最后一行
NSIndexPath *lastPath = [NSIndexPath indexPathForRow:self.messageFrames.count - 1 inSection:0];
[self.tableView scrollToRowAtIndexPath:lastPath atScrollPosition:UITableViewScrollPositionBottom animated:YES];
15、键盘处理
/*
UIKeyboardAnimationCurveUserInfoKey = 7; // 动画的执行节奏(速度)
UIKeyboardAnimationDurationUserInfoKey = "0.25"; // 键盘弹出\隐藏动画所需要的时间
UIKeyboardBoundsUserInfoKey = "NSRect: {{0, 0}, {320, 216}}";
UIKeyboardCenterBeginUserInfoKey = "NSPoint: {160, 588}";
UIKeyboardCenterEndUserInfoKey = "NSPoint: {160, 372}";
UIKeyboardFrameChangedByUserInteraction = 0;
// 键盘弹出
UIKeyboardFrameBeginUserInfoKey = "NSRect: {{0, 480}, {320, 216}}";// 键盘刚出来那一刻的frame
UIKeyboardFrameEndUserInfoKey = "NSRect: {{0, 264}, {320, 216}}"; // 键盘显示完毕后的frame
// 键盘隐藏
UIKeyboardFrameBeginUserInfoKey = "NSRect: {{0, 264}, {320, 216}}";
UIKeyboardFrameEndUserInfoKey = "NSRect: {{0, 480}, {320, 216}}";
*/
16、旋转事件 —> UIApplication —> UIWindow
17、scrollView相关属性
1、滚动范围:self.scrollView.contentSize = CGSizeMake(0, contentH);
2、// 增加额外的滚动区域(在顶部增加64的区域,在底部增加44的区域)
self.scrollView.contentInset = UIEdgeInsetsMake(64, 0, 44, 0);
3、// 设置一开始的滚动位置(往下滚动64)
self.scrollView.contentOffset = CGPointMake(0, -64);
4、// 设置最大和最小的缩放比例
self.scrollView.maximumZoomScale = 2.0;
self.scrollView.minimumZoomScale = 0.2;
18、alertView // 弹框
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"数据展示" message:nil delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];
// 设置对话框的类型
alert.alertViewStyle = UIAlertViewStylePlainTextInput;
// 取得唯一的那个文本框,显示英雄的名称
[alert textFieldAtIndex:0].text = hero.name;
[alert show];
19// 表格的局部刷新
NSIndexPath *path = [NSIndexPath indexPathForRow:row inSection:0];
[self.tableView reloadRowsAtIndexPaths:@[path] withRowAnimation:UITableViewRowAnimationBottom];
20、跳转控制器的三种方法:
1->push
2->modal
3->改变窗口的根视图控制器
[UIApplication sharedApplication].keyWindow.rootViewController = mainVc;