iOS開發(fā)小知識點(diǎn)整理第二期(持續(xù)更新)

1.根據(jù)時間戳顯示不同的時間扬舒,如果是今年的時間纤掸,則顯示月日時分秒脐供,如果是今天的時間,顯示時分秒借跪,如果不是今年的時間政己,則顯示年月日時分秒

NSTimeInterval  time = [timerInterval doubleValue]/1000;
NSDate *currentDate=[NSDate dateWithTimeIntervalSince1970:time];
//判斷是否是今年
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
fmt.dateFormat = @"yyyy";
    
NSString *nowYear = [fmt stringFromDate:[NSDate date]];
NSString *selfYear = [fmt stringFromDate:currentDate];
    
if ([nowYear isEqualToString:selfYear]) {
    
    //是今年
    //判斷是否是今天
    NSDateFormatter *fmt1 = [[NSDateFormatter alloc] init];
    fmt1.dateFormat = @"yyyyMMdd";
    NSString *nowString = [fmt1 stringFromDate:[NSDate date]];
    NSString *selfString = [fmt1 stringFromDate:currentDate];
    
    if ([nowString isEqualToString:selfString]) {
        
        //是今天 顯示時分秒
        NSDateFormatter *dateformatter=[[NSDateFormatter alloc] init];
        [dateformatter setDateFormat:@"HH:mm:ss"];
        return [dateformatter stringFromDate:currentDate];
        
    }else{
        
        //不是今天 顯示月日 時分秒
        NSDateFormatter *dateformatter=[[NSDateFormatter alloc] init];
        [dateformatter setDateFormat:@"MM-dd HH:mm:ss"];
        return [dateformatter stringFromDate:currentDate];
    }
    
}else{
    
    //不是今年,返回時間的格式為年月日形式
    NSDateFormatter *dateformatter=[[NSDateFormatter alloc] init];
    [dateformatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    return [dateformatter stringFromDate:currentDate];
}

2.將16進(jìn)制的字符串轉(zhuǎn)換為UIColor的方法

+ (UIColor *)colorWithHexString:(NSString *)hexColorString {
    if ([hexColorString length] < 6) { //長度不合法
        return [UIColor blackColor];
    }
    NSString *tempString = [hexColorString lowercaseString];
    if ([tempString hasPrefix:@"0x"]) { //檢查開頭是0x
        tempString = [tempString substringFromIndex:2];
    } else if ([tempString hasPrefix:@"#"]) { //檢查開頭是#
        tempString = [tempString substringFromIndex:1];
    }
    if ([tempString length] != 6) {
        return [UIColor blackColor];
    }
    //分解三種顏色的值
    NSRange range = NSMakeRange(0, 2);
    NSString *rString = [tempString substringWithRange:range];
    range.location = 2;
    NSString *gString = [tempString substringWithRange:range];
    range.location = 4;
    NSString *bString = [tempString substringWithRange:range];
    //取三種顏色值
    unsigned int r, g, b;
    [[NSScanner scannerWithString:rString] scanHexInt:&r];
    [[NSScanner scannerWithString:gString] scanHexInt:&g];
    [[NSScanner scannerWithString:bString] scanHexInt:&b];
    return [UIColor colorWithRed:((float)r / 255.0f)
                           green:((float)g / 255.0f)
                            blue:((float)b / 255.0f)
                           alpha:1.0f];
}

3.獲取網(wǎng)絡(luò)視頻的時間掏愁,將其轉(zhuǎn)換為時分格式

- (NSString *)getVideoInfoWithSourcePath:(NSString *)path{
    AVURLAsset * asset = [AVURLAsset assetWithURL:[NSURL URLWithString:path]];
    CMTime  time = [asset duration];
    int seconds = ceil(time.value/time.timescale);
    
    int second = seconds % 60;
    int minutes = (seconds / 60) % 60;
    return [NSString stringWithFormat:@"%02d:%02d", minutes, second];
}

4.裁剪網(wǎng)絡(luò)圖片歇由,使其顯示在控件上不變形

+(UIImage *)getImageFromUrl:(NSURL *)imgUrl imgViewWidth:(CGFloat)width imgViewHeight:(CGFloat)height{
    
    UIImage * newImage = [self getImageFromUrl:imgUrl imgViewWidth:width imgViewHeight:height];
    
    return newImage;
    
}
//裁剪圖片
- (UIImage *)cutImage:(UIImage*)image imgViewWidth:(CGFloat)width imgViewHeight:(CGFloat)height
{
    //壓縮圖片
    
    CGSize newSize;
    
    CGImageRef imageRef = nil;
    
    if ((image.size.width / image.size.height) < (width / height)) {
        
        newSize.width = image.size.width;
        
        newSize.height = image.size.width * height /width;
        
        imageRef = CGImageCreateWithImageInRect([image CGImage], CGRectMake(0, fabs(image.size.height - newSize.height) / 2, newSize.width, newSize.height));
        
    } else {
        
        newSize.height = image.size.height;
        
        newSize.width = image.size.height * width / height;
        
        imageRef = CGImageCreateWithImageInRect([image CGImage], CGRectMake(fabs(image.size.width - newSize.width) / 2, 0, newSize.width, newSize.height));
        
    }
    return [UIImage imageWithCGImage:imageRef];
}

5.圖片裁剪

-(UIImage *) scaleImage: (UIImage *)image scaleFactor:(float)scaleBy
{
    if (image.size.width>1000) {
        scaleBy = 1000/image.size.width;
    }else{
        scaleBy= 1.0;
    }
    CGSize size = CGSizeMake(image.size.width * scaleBy, image.size.height * scaleBy);
    UIGraphicsBeginImageContext(size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGAffineTransform transform = CGAffineTransformIdentity;
    transform = CGAffineTransformScale(transform, scaleBy, scaleBy);
    CGContextConcatCTM(context, transform);
    [image drawAtPoint:CGPointMake(0.0f, 0.0f)];
    UIImage *newimg = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return newimg;
    
}

6.將時間字符串轉(zhuǎn)換為時間戳(format必需和時間字符串時間的格式保持一致)

-(NSInteger)timeSwitchTimestamp:(NSString *)formatTime andFormatter:(NSString *)format{
    
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:format];
    NSDate *date = [dateFormatter dateFromString:formatTime];
    //時間轉(zhuǎn)時間戳的方法:
    
    NSInteger timeSp = [[NSNumber numberWithDouble:[date timeIntervalSince1970]] integerValue];
    
    NSLog(@"將某個時間轉(zhuǎn)化成 時間戳&&&&&&&timeSp:%ld",(long)timeSp); //時間戳的值
    return timeSp;
    
}

7.判斷手機(jī)號的合法性

+ (BOOL)isMobileNumber:(NSString *)mobileNum
{
    if (mobileNum.length != 11)
    {
        return NO;
    }
    /**
     * 手機(jī)號碼:
     * 13[0-9], 14[5,7], 15[0, 1, 2, 3, 5, 6, 7, 8, 9], 17[0, 1, 6, 7, 8], 18[0-9]
     * 移動號段: 134,135,136,137,138,139,147,150,151,152,157,158,159,170,178,182,183,184,187,188
     * 聯(lián)通號段: 130,131,132,145,155,156,170,171,175,176,185,186
     * 電信號段: 133,149,153,170,173,177,180,181,189
     */
    NSString *MOBILE = @"^1(3[0-9]|4[57]|5[0-35-9]|7[0135678]|8[0-9])\\d{8}$";
    /**
     * 中國移動:China Mobile
     * 134,135,136,137,138,139,147,150,151,152,157,158,159,170,178,182,183,184,187,188
     */
    NSString *CM = @"^1(3[4-9]|4[7]|5[0-27-9]|7[08]|8[2-478])\\d{8}$";
    /**
     * 中國聯(lián)通:China Unicom
     * 130,131,132,145,155,156,170,171,175,176,185,186
     */
    NSString *CU = @"^1(3[0-2]|4[5]|5[56]|7[0156]|8[56])\\d{8}$";
    /**
     * 中國電信:China Telecom
     * 133,149,153,170,173,177,180,181,189
     */
    NSString *CT = @"^1(3[3]|4[9]|53|7[037]|8[019])\\d{8}$";
    
    
    NSPredicate *regextestmobile = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", MOBILE];
    NSPredicate *regextestcm = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CM];
    NSPredicate *regextestcu = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CU];
    NSPredicate *regextestct = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CT];
    
    if (([regextestmobile evaluateWithObject:mobileNum] == YES)
        || ([regextestcm evaluateWithObject:mobileNum] == YES)
        || ([regextestct evaluateWithObject:mobileNum] == YES)
        || ([regextestcu evaluateWithObject:mobileNum] == YES))
    {
        return YES;
    }
    else
    {
        return NO;
    }
}

8.將字符串進(jìn)行MD5加密

+ (NSString *)md5EncryptWithString:(NSString *)string {
    
     return [self md5:[NSString stringWithFormat:@"%@", string]];
}

+ (NSString *)md5:(NSString *)string{
    const char *cStr = [string UTF8String];
    unsigned char digest[CC_MD5_DIGEST_LENGTH];
    
    CC_MD5(cStr, (CC_LONG)strlen(cStr), digest);
    
    NSMutableString *result = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
    for (int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) {
        [result appendFormat:@"%02X", digest[i]];
    }
    
    NSLog(@"----%@",result);
    return result;
    
}

9.手機(jī)類型的判斷

+ (NSString *)iphoneType {
    
    struct utsname systemInfo;
    
    uname(&systemInfo);
    
    NSString *platform = [NSString stringWithCString:systemInfo.machine encoding:NSASCIIStringEncoding];
    
    if ([platform isEqualToString:@"iPhone1,1"]) return @"iPhone 2G";
    
    if ([platform isEqualToString:@"iPhone1,2"]) return @"iPhone 3G";
    
    if ([platform isEqualToString:@"iPhone2,1"]) return @"iPhone 3GS";
    
    if ([platform isEqualToString:@"iPhone3,1"]) return @"iPhone 4";
    
    if ([platform isEqualToString:@"iPhone3,2"]) return @"iPhone 4";
    
    if ([platform isEqualToString:@"iPhone3,3"]) return @"iPhone 4";
    
    if ([platform isEqualToString:@"iPhone4,1"]) return @"iPhone 4S";
    
    if ([platform isEqualToString:@"iPhone5,1"]) return @"iPhone 5";
    
    if ([platform isEqualToString:@"iPhone5,2"]) return @"iPhone 5";
    
    if ([platform isEqualToString:@"iPhone5,3"]) return @"iPhone 5c";
    
    if ([platform isEqualToString:@"iPhone5,4"]) return @"iPhone 5c";
    
    if ([platform isEqualToString:@"iPhone6,1"]) return @"iPhone 5s";
    
    if ([platform isEqualToString:@"iPhone6,2"]) return @"iPhone 5s";
    
    if ([platform isEqualToString:@"iPhone7,1"]) return @"iPhone 6 Plus";
    
    if ([platform isEqualToString:@"iPhone7,2"]) return @"iPhone 6";
    
    if ([platform isEqualToString:@"iPhone8,1"]) return @"iPhone 6s";
    
    if ([platform isEqualToString:@"iPhone8,2"]) return @"iPhone 6s Plus";
    
    if ([platform isEqualToString:@"iPhone8,4"]) return @"iPhone SE";
    
    if ([platform isEqualToString:@"iPhone9,1"]) return @"iPhone 7";
    
    if ([platform isEqualToString:@"iPhone9,2"]) return @"iPhone 7 Plus";
    
    if ([platform isEqualToString:@"iPod1,1"])   return @"iPod Touch 1G";
    
    if ([platform isEqualToString:@"iPod2,1"])   return @"iPod Touch 2G";
    
    if ([platform isEqualToString:@"iPod3,1"])   return @"iPod Touch 3G";
    
    if ([platform isEqualToString:@"iPod4,1"])   return @"iPod Touch 4G";
    
    if ([platform isEqualToString:@"iPod5,1"])   return @"iPod Touch 5G";
    
    if ([platform isEqualToString:@"iPad1,1"])   return @"iPad 1G";
    
    if ([platform isEqualToString:@"iPad2,1"])   return @"iPad 2";
    
    if ([platform isEqualToString:@"iPad2,2"])   return @"iPad 2";
    
    if ([platform isEqualToString:@"iPad2,3"])   return @"iPad 2";
    
    if ([platform isEqualToString:@"iPad2,4"])   return @"iPad 2";
    
    if ([platform isEqualToString:@"iPad2,5"])   return @"iPad Mini 1G";
    
    if ([platform isEqualToString:@"iPad2,6"])   return @"iPad Mini 1G";
    
    if ([platform isEqualToString:@"iPad2,7"])   return @"iPad Mini 1G";
    
    if ([platform isEqualToString:@"iPad3,1"])   return @"iPad 3";
    
    if ([platform isEqualToString:@"iPad3,2"])   return @"iPad 3";
    
    if ([platform isEqualToString:@"iPad3,3"])   return @"iPad 3";
    
    if ([platform isEqualToString:@"iPad3,4"])   return @"iPad 4";
    
    if ([platform isEqualToString:@"iPad3,5"])   return @"iPad 4";
    
    if ([platform isEqualToString:@"iPad3,6"])   return @"iPad 4";
    
    if ([platform isEqualToString:@"iPad4,1"])   return @"iPad Air";
    
    if ([platform isEqualToString:@"iPad4,2"])   return @"iPad Air";
    
    if ([platform isEqualToString:@"iPad4,3"])   return @"iPad Air";
    
    if ([platform isEqualToString:@"iPad4,4"])   return @"iPad Mini 2G";
    
    if ([platform isEqualToString:@"iPad4,5"])   return @"iPad Mini 2G";
    
    if ([platform isEqualToString:@"iPad4,6"])   return @"iPad Mini 2G";
    
    if ([platform isEqualToString:@"i386"])      return @"iPhone Simulator";
    
    if ([platform isEqualToString:@"x86_64"])    return @"iPhone Simulator";
    
    return platform;
    
}

10.UITableView分類添加方法,實(shí)現(xiàn)沒有數(shù)據(jù)界面展示

-(NSInteger)showImageWithName:(NSString *)imageName
         showMessageWithTitle:(NSString *)title
             byDataArrayCount:(NSInteger)count
                      withTop:(CGFloat)top
               withImageWidth:(CGFloat)imageWidth
              withImageHeight:(CGFloat)imageHeigt {
    
    if (count == 0) {
        
        self.backgroundView = ({
            
            UIView *backView = [[UIView alloc] init];
            backView.frame = self.backgroundView.frame;
            UIImageView *imageView = [[UIImageView alloc] init];
            imageView.image = [UIImage imageNamed:imageName];
            [backView addSubview:imageView];
            
            UILabel *label = [[UILabel alloc] init];
            label.text = title;
            [UILabel setLabelTextColor:UIColorFromRGBValue(0x959595) AndFontSize:[self autoScaleW:14] WithLabel:label];
            label.textAlignment = NSTextAlignmentCenter;
            [backView addSubview:label];
            
            [imageView mas_makeConstraints:^(MASConstraintMaker *make) {
               
                make.leading.equalTo(backView).offset((screenW - [self autoScaleW:imageWidth])/2);
                make.top.equalTo([self autoScaleH:top]);
                make.width.equalTo([self autoScaleW:imageWidth]);
                make.height.equalTo([self autoScaleH:imageHeigt]);
            }];
            
            [label mas_makeConstraints:^(MASConstraintMaker *make) {
               
                make.top.equalTo(imageView.bottom).equalTo(10);
                make.leading.equalTo(0);
                make.width.equalTo(screenW);
                make.height.equalTo(21);
            }];
            
            backView;
            
        });
    }else{
        
        self.backgroundView = nil;
    }
    
    return count;
    
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末果港,一起剝皮案震驚了整個濱河市沦泌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌辛掠,老刑警劉巖谢谦,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異公浪,居然都是意外死亡他宛,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進(jìn)店門欠气,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人镜撩,你說我怎么就攤上這事预柒。” “怎么了袁梗?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵宜鸯,是天一觀的道長。 經(jīng)常有香客問我遮怜,道長淋袖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任锯梁,我火速辦了婚禮即碗,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘陌凳。我一直安慰自己剥懒,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布合敦。 她就那樣靜靜地躺著初橘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上保檐,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天耕蝉,我揣著相機(jī)與錄音,去河邊找鬼夜只。 笑死赔硫,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的盐肃。 我是一名探鬼主播爪膊,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼砸王!你這毒婦竟也來了推盛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤谦铃,失蹤者是張志新(化名)和其女友劉穎耘成,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體驹闰,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡瘪菌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了嘹朗。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片师妙。...
    茶點(diǎn)故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖屹培,靈堂內(nèi)的尸體忽然破棺而出默穴,到底是詐尸還是另有隱情,我是刑警寧澤褪秀,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布蓄诽,位于F島的核電站,受9級特大地震影響媒吗,放射性物質(zhì)發(fā)生泄漏仑氛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一闸英、第九天 我趴在偏房一處隱蔽的房頂上張望锯岖。 院中可真熱鬧,春花似錦自阱、人聲如沸嚎莉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽趋箩。三九已至赃额,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間叫确,已是汗流浹背跳芳。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留竹勉,地道東北人飞盆。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像次乓,于是被迫代替她去往敵國和親吓歇。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評論 2 355

推薦閱讀更多精彩內(nèi)容