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