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; |