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:方法以不快取的形式載入圖片,必須將圖片資源放置在根目錄中。