ios開發中的一點小經驗

1.保留2位小數點

   //.2代表小數點後面保留2(2代表保留的數量)

    NSString *string = [NSString stringWithFormat:@"%.2f",M_PI];

    //輸出結果是: 3.14

    NSLog(@"%@", string);

2.用0補全的方法

   NSInteger count = 9;

    //02表示如果count的位數不足2位,在前面用0補齊(2代表保留的數量)

    NSString *countStr = [NSString stringWithFormat:@"%02zd",count];

    //輸出結果是09

    NSLog(@"%@",countStr);

3.判斷是否爲gif/png圖片的正確姿勢

首先我們先想想如果是你, 你會怎麼去判斷一個從網絡獲取的圖片URL是否爲gif圖片, 是否是這樣呢 ? 如下:

1
2
3
4
5
6
7
8
9
//假設這是一個網絡獲取的URL
// 判斷是否爲gif
NSString *extensionName = path.pathExtension;
if ([extensionName.lowercaseString isEqualToString:@"gif"]) {
    //是gif圖片
else {
    //不是gif圖片
 }

什麼難道你不是這麼判斷的麼 ? 哦~ 我懂了, 難道你使用字符串截取來判斷的嗎 ? 哈哈開個玩笑!

以上判斷看似是可以的,但是這不嚴謹的, 在不知道圖片擴展名的情況下, 如何知道圖片的真實類型 ? 其實就是取出圖片數據的第一個字節, 就可以判斷出圖片的真實類型那該怎麼做呢如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//通過圖片Data數據第一個字節 來獲取圖片擴展名
- (NSString *)contentTypeForImageData:(NSData *)data {
    uint8_t c;
    [data getBytes:&c length:1];
    switch (c) {
        case 0xFF:
            return @"jpeg";
        case 0x89:
            return @"png";
        case 0x47:
            return @"gif";
        case 0x49:
        case 0x4D:
            return @"tiff";
        case 0x52:
            if ([data length] < 12) {
                return nil;
            }
            NSString *testString = [[NSString alloc] initWithData:[data subdataWithRange:NSMakeRange(0, 12)] encoding:NSASCIIStringEncoding];
            if ([testString hasPrefix:@"RIFF"] && [testString hasSuffix:@"WEBP"]) {
                return @"webp";
            }
            return nil;
    }
    return nil;
}

其實圖片數據的第一個字節是固定的,一種類型的圖片第一個字節就是它的標識, 我們來調用一下這個方法:

1
2
3
4
5
6
7
//假設這是一個網絡獲取的URL
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:path]];
//調用獲取圖片擴展名
NSString *string = [self contentTypeForImageData:data];
//輸出結果爲 png
NSLog(@"%@",string);

4.Button禁止觸摸事件的2種方式

大家應該知道, 有很多需求是在規定內不允許點擊Button, 並且讓用戶知道這個按鈕是不可以點擊的,那我們應該這樣設置:

1
2
//會改變按鈕的狀態,顏色會變灰
button.enabled = NO;

但是又有一個需求是既不能點擊也不要改變Button顏色:

1
2
//保持按鈕原來的狀態,顏色不會變
button.userInteractionEnabled = NO;


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章