今天在写oc的时候也遇到不少问题,今天整理一下记录一下小知识
问题一:怎样计算UILabel 的高度?
当使用真机模拟的时候,UILabel 有一些方法原本在模拟器没有出现错误,但在低版本的真机下出现问题,导致了运行时报错 闪退。因为在高版本API部分接口已经调整过了,所以真机就出现了问题为了适应不同的版本需求, 需要判断IOS的版本做不同的需求。
IOS6版本方法 sizeWithFont 在IOS7版本已经不提倡了。
IOS7版本方法 boundingRectWithSize IOS6没有该方法
所以计算高度的时候 为了兼容IOS6的系统也可以根据判断版本去调用不同的方法去计算方法其高度。
个人是想不懂,苹果调整API不做底层修改,非得程序报错了才让其去适应这一点真想不透。
问题二:怎样判断IOS的版本?
UIDevice 类记录了IOS的版本信息,使用它就可以判断该类的版本号.使用define 去定义也是可以。
CGFloat version = [[UIDevice currentDevice] systemVersion].floatValue;
#define IOS_6 [[UIDevice currentDevice] systemVersion].floatValue >=6;
#define IOS_7 [[UIDevice currentDevice] systemVersion].floatValue >=7;
#define IOS_8 [[UIDevice currentDevice] systemVersion].floatValue >=8;
问题三:怎样使用OBJC判断 引入常用包?
#ifdef __OBJC__
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#endif
我们经常需要引入Foundation 和UIKit的包,可以定义pch文件里面定义导入两个,这样子我们就不用经常手动去添加这两个包。
问题四:怎样换算时间?
换算时间需要了解字母的大小写的区别.使用NSDateFormatter 这样的方式去格式化处理时间。
NSDateFormatter *df=[[NSDateFormatter alloc]init];
[df setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
NSDate *date =[NSDate date];
NSString *str = [df stringFromDate:date];
NSLog(@"结果是:%@",str);//2015-05-06
怎样处理一天后的时间?
怎样处理隔天的时间?
NSTimeInterval secondsPerDate =24*60*60;
NSDate *tomorroe =[NSDate dateWithTimeIntervalSinceNow:secondsPerDate];
NSLog(@"%@",tomorroe);
NSDate *yesterday = [NSDate dateWithTimeIntervalSinceNow:-secondsPerDate];
NSLog(@"%@",yesterday);
引用下面文章的引出:时区日期处理及定时 (NSDate,NSCalendar,NSTimer,NSTimeZone) – IOS(实例)
日期格式如下:
y 年 Year 1996; 96
M 年中的月份 Month July; Jul; 07
w 年中的周数 Number 27
W 月份中的周数 Number 2
D 年中的天数 Number 189
d 月份中的天数 Number 10
F 月份中的星期 Number 2
E 星期中的天数 Text Tuesday; Tue
a Am/pm 标记 Text PM
H 一天中的小时数(0-23) Number 0
k 一天中的小时数(1-24) Number 24
K am/pm 中的小时数(0-11) Number 0
h am/pm 中的小时数(1-12) Number 12
m 小时中的分钟数 Number 30
s 分钟中的秒数 Number 55
S 毫秒数 Number 978
z 时区 General time zone Pacific Standard Time; PST; GMT-08:00
Z 时区 RFC 822 time zone -0800