iOS特别技能点总结4

iOS-获取的NSDate date时间与实际相差8个小时解决方案

NSDate *date = [NSDate date];
NSTimeZone *zone = [NSTimeZone systemTimeZone];
NSInteger interval = [zone secondsFromGMTForDate: date];
NSDate *localeDate = [date  dateByAddingTimeInterval: interval]; 

iOS编程-XCode Debug忽略SIGPIPE信号

在 main.m 中添加
signal(SIGPIPE, SIG_IGN);
debug的时候, 忽略SIGPIPE是不起作用的.

UITableView最上面tableHeaderView留空间的两种方法

1. UIView *headerView = [[UIView alloc] initWithFrame: CGRectMake(0, 0, 320, 44)];
   m_tableView.tableHeaderView = headerView;

2. m_tableView.contentInset = UIEdgeInsetsMake(44, 0, 0, 0);
   m_tableView.scrollIndicatorInsets = UIEdgeInsetsMake(44, 0, 0, 0);

iOS 函数

// ceil:如果参数是小数,则求最小的整数但不小于本身
NSLog(@"%f",  ceilf(1.0000002)); // 7
NSLog(@"%f",   ceil(1.000000000000001)); // 15
NSLog(@"%Lf", ceill(1.000000000000001)); // 15

// round:如果参数是小数,则求本身的四舍五入。
NSLog(@"%f", round(10.0000000004));
NSLog(@"%f", roundf(10.5));
NSLog(@"%Lf", roundl(10));

// floor:如果参数是小数,则求最大的整数但不大于本身.
NSLog(@"%f", floor(10.00001));
NSLog(@"%f", floorf(12.4));
NSLog(@"%Lf", floorl(10.54));

ios9中设置状态栏颜色与隐藏

1.iOS中设置状态栏的样式由 最顶层的UIWindow所在的控制器控制处理。
2.ios9之前可以不用设置window的根控制器,ios9必须设置根控制器。
3.ios9后设置状态栏的样式(隐藏)时,在最顶层的UIWindow所在的控制器中通过下面两个方法处理

- (UIStatusBarStyle)preferredStatusBarStyle {   //设置样式
 return  UIStatusBarStyleLightContent;
}

- (BOOL)prefersStatusBarHidden { //设置隐藏显示
 return NO;
}

通过
[[UIApplication sharedApplication] setStatusBarHidden:BOOL];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyle)];
设置不太好使。
4.ios9中如果创建多个window,则改变状态栏的样式,只能在最顶层的window中的控制器中设置状态栏样式才有效。

例如:设置两个Window,通过在最顶层的window中的控制器中设置状态栏样式更改转态栏