iOS开发之最近的小知识点总结一

1、NSInteger打印以及字符串的转换

2、UIScrollView 在iOS7中使用了Autolayout 导致不能滚动

3、APP包瘦身

4、interactivepopgesturerecognizer 使用

5、UICollectionView的数据不够,无法滑动——解决方案

6、workspace — project — targets 讲解

7、绘画虚线, drawRect绘画frame未定的情况

8、APP 启动页不更新

9、判断是否为gif/png图片的正确姿势

具体方法:

1、NSInteger打印以及字符串的转换

    NSInteger integer = 1;

    NSLog(@"first number: %zd", integer);

    NSUInteger uinteger = 1;

    NSLog(@"second number: %tu", uinteger);

2、UIScrollView 在iOS7中使用了Autolayout 导致不能滚动

    - (void)viewDidLayoutSubviews
    {
         [_mainScrollView setContentSize:CGSizeMake(SCREEN_WIDTH, SCREEN_HEIGHT + 10)];//增加10个像素让scrollview可上下滑动
    }
添加scrollView的content高度.

3、APP包瘦身

1)删除项目中没有使用的图片。

2)删除项目中没有用到的class 和 xib 及storyboard。

安装 fui 工具
sudo gem install fui -n /usr/local/bin

fui usage: https://github.com/dblock/fui

到工程目录下,执行 fui find 命令,可以找出所有的没有用到的class文件。

3)分析ipa包,找出大于500K的文件或内容 使用

find . -type f -size +500000c | xargs ls -lh

4、interactivepopgesturerecognizer 使用

设置left bar button后,会导致右滑返回的效果失效,查看完美的设置方案

同时为了获取到右滑返回的事件,可以执行
[self.navigationController.interactivePopGestureRecognizer addTarget:self action:@selector(back)];

在ViewController中viewDidAppare中添加,在viewWillDisappear中remove。

5、UICollectionView的数据不够,无法滑动——解决方案

tableView的数据无论多少,它的界面默认都是可以滑动的。

和tableView相比,当collectionView的数据较少不够一个屏幕时,它无法滑动。

解决方案:

_collectionView.alwaysBounceVertical = YES;//设置为总能垂直滑动就OK了。

6、workspace — project — targets 讲解

一个工作空间可以包含多个项目,一个项目可以包含多个目标(生成物)。

一个项目中根据运行的targets不同,可以进行不同的编译设置,project是基础父类,targets是子类,targets的设置会覆盖project的设置。

7、绘画虚线, drawRect绘画frame未定的情况

    [yourView.layer setBorderWidth:5.0];
    [yourView.layer setBorderColor:
    [[UIColor colorWithPatternImage:[UIImage imageNamed:@"DotedImage.png"]] CGColor]];//just add image name and create image with dashed or doted drawing and add here
这里只需要添加QuartzCore/QuartzCore.h框架,像下面一样导入.m文件:
    #import <QuartzCore/QuartzCore.h>
注意:
当使用Autolayout后,绘画虚线是根据frame进行的,那么在
    - (void)drawRect:(CGRect)rect
    {
        [self drawBorderLayer];
    }
drawRect方法中,进行绘画。

8、APP 启动页不更新

修改了LaunchScreen.xib 后,模拟器上显示正常,但是真机上没有更新。

原因: 应用缓存

解决:真机上删除APP,重启手机,重新安装APP。

9、判断是否为gif/png图片的正确姿势

    //通过图片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;
    }
其实图片数据的第一个字节是固定的,一种类型的图片第一个字节就是它的标识, 我们来调用一下这个方法:
    //假设这是一个网络获取的URL
    NSString *path = @"http://pic.rpgsky.net/images/2016/07/26/3508cde5f0d29243c7d2ecbd6b9a30f1.png";
    NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:path]];
    //调用获取图片扩展名
    NSString *string = [self contentTypeForImageData:data];
    //输出结果为 png
    NSLog(@"%@",string);





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hbblzjy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值