1.NSDate 取年月日等等
最近项目中要取到当前时间的年月日等等数据,搜遍终得一个方法如下:
- (void)setDateArray
{
NSDate *dateNow;
for (int i = 0; i<7; i++) {
dateNow = [NSDate dateWithTimeIntervalSinceNow:i*24*60*60];
NSCalendar *calendar = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *comps = [[NSDateComponents alloc]init];
NSInteger unitFlags = NSYearCalendarUnit|NSDayCalendarUnit|NSWeekdayCalendarUnit|NSHourCalendarUnit |NSMonthCalendarUnit;
comps = [calendar components:unitFlags fromDate:dateNow];
long day = [comps day];
NSUInteger month = [comps month];
NSString *dateStr = [NSString stringWithFormat:@"%ld月%ld日",month,day];
[_dateArray addObject:dateStr];
}
}
输出_dataArray 可得
**12****月****14****日**
**12****月****15****日**
**12****月****16****日**
**12****月****17****日**
**12****月****18****日**
**12****月****19****日**
**12****月****20****日**
- xcode 7 tableView的一些小问题
tableView 在xcode7 下会有一些分割线无法被隐藏
解决办法:
-(void)layoutSubviews{
[super layoutSubviews];
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
}
- reloadData 刷新失效
[tableView reloadData]
无效,有一行 cell 明明改变了但是刷新不出来。
解决的方法是,注释 [tableView reloadData] ,改用局部刷新:
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone];
4.测试 bug 的工具
bugtags 用了不后悔
/**
* 判断一个时间段有几天几个小时几分钟等等
*
* @param startDate 开始日期
* @param endDate 结束时间
*
* @return 返回两个时间段中间差几个小时
*/
+ (NSString *)getStartTime:(NSString *)startDate endTime:(NSString *)endDate
{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"HH:mm"];
NSDate *date1 = [dateFormatter dateFromString:startDate];
NSDate *date2 = [dateFormatter dateFromString:endDate];
NSTimeInterval time = [date2 timeIntervalSinceDate:date1];
float hours = (float)time/3600;
return [NSString stringWithFormat:@"%.2f",hours];
}
/**
* 判断一个时间段内有几个星期几 (比如判断1月29号到2月12号有几个星期五)
*
* @param startDate 开始时间
* @param endDate 结束时间
* @param weekStr 判断的星期几
*
* @return nsstring 是个数
*/
- (NSString *)featureWeekdayWithDate:(NSString *)startDate endStart:(NSString *)endDate weekStr:(NSString *)weekStr
{
NSInteger dayIndex = 0;
if ([weekStr isEqualToString:@"星期天"]) {
dayIndex = 7;
}
if ([weekStr isEqualToString:@"星期一"]) {
dayIndex = 1;
}
if ([weekStr isEqualToString:@"星期二"]) {
dayIndex = 2;
}
if ([weekStr isEqualToString:@"星期三"]) {
dayIndex = 3;
}
if ([weekStr isEqualToString:@"星期四"]) {
dayIndex = 4;
}
if ([weekStr isEqualToString:@"星期五"]) {
dayIndex = 5;
}
if ([weekStr isEqualToString:@"星期六"]) {
dayIndex = 6;
}
long days = [[MyUtil getStartTime:startDate endTime:endDate] integerValue];
days++;
// 将总天数 换算为 以 周 计算(假如 相差10天,其实就是等于 相差 1周零3天,只需要取3天,更加方便计算)
NSInteger fullIndex = days>=7 ? days/7 : 0;
long day = days >= 7 ? days % 7 : days;
NSInteger flag = 0;
for (int i = 0; i< day; i++) {
NSDate *date = [NSDate dateWithString:startDate format:@"yyyy-MM-dd"];
long week = ([date weekday]+i)%7;
switch (week) {
case 1:
if (dayIndex == 7) {
flag++;
}
break;
case 2:
if (dayIndex == 1) {
flag++;
}
break;
case 3:
if (dayIndex == 2) {
flag++;
}
break;
case 4:
if (dayIndex == 3) {
flag++;
}
break;
case 5:
if (dayIndex == 4) {
flag++;
}
break;
case 6:
if (dayIndex == 5) {
flag++;
}
break;
case 7:
if (dayIndex == 6) {
flag++;
}
break;
default:
break;
}
}
return [NSString stringWithFormat:@"%d",fullIndex+flag];
}
设置一个 UIView 的背景图片:推荐使用
NSString *path = [[NSBundlemainBundle]pathForResource:@"image"ofType:@"jpg"];
UIImage *image = [UIImageimageWithContentsOfFile:path];
self.view.layer.contents = (id)image.CGImage;
图片缓存
根据是否将创建好的对象缓存入系统内存,有两类创建UIImage对象的方法可选:
缓存:+ imageNamed:,只需传入文件名.扩展名(可选)即可。
不缓存:+ imageWithContentsOfFile:,必须传入文件的全名(全路径+文件名)。
Assets.xcassets中的图片资源只能通过imageNamed:方法加载,通过NSBundle的pathForResource:ofType:无法获得图片路径。因此,Assets.xcassets只适合存放系统常用的,占用内存小的图片资源。
imageNamed:方法同样可以加载根目录中的图片资源。
要想利用imageWithContentsOfFile:方法以不缓存的形式加载图片,必须将图片资源放置在根目录中。