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