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;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值