您的位置:首页 > 移动开发 > IOS开发

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

2017-08-14 16:58 295 查看
[b]1、NSInteger打印以及字符串的转换[/b]
[b]2、UIScrollView 在iOS7中使用了Autolayout 导致不能滚动
[/b]
[b]3、APP包瘦身[/b]
[b][b]4、interactivepopgesturerecognizer 使用
[/b][/b]
[b][b]5、UICollectionView的数据不够,无法滑动——解决方案
[/b][/b]
[b][b]6、workspace — project — targets 讲解
[/b][/b]
[b][b]7、绘画虚线, drawRect绘画frame未定的情况[/b][/b]
[b][b]8、[/b][b][b]APP 启动页不更新[/b]
[/b][/b]
[b][b]9、判断是否为gif/png图片的正确姿势
[/b][/b]
[b]具体方法:[/b]
[b]1、NSInteger打印以及字符串的转换[/b]
NSInteger integer = 1;

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

NSUInteger uinteger = 1;

NSLog(@"second number: %tu", uinteger);
[b]2、UIScrollView 在iOS7中使用了Autolayout 导致不能滚动[/b]
- (void)viewDidLayoutSubviews
{
[_mainScrollView setContentSize:CGSizeMake(SCREEN_WIDTH, SCREEN_HEIGHT + 10)];//增加10个像素让scrollview可上下滑动
}
添加scrollView的content高度.
[b]3、APP包瘦身[/b]

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
[b][b]4、interactivepopgesturerecognizer 使用[/b][/b]

设置left bar button后,会导致右滑返回的效果失效,查看完美的设置方案
同时为了获取到右滑返回的事件,可以执行
[self.navigationController.interactivePopGestureRecognizer addTarget:self action:@selector(back)];
在ViewController中viewDidAppare中添加,在viewWillDisappear中remove。
[b][b]5、UICollectionView的数据不够,无法滑动——解决方案[/b][/b]

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

和tableView相比,当collectionView的数据较少不够一个屏幕时,它无法滑动。
解决方案:
[b][b]_collectionView.alwaysBounceVertical = YES;[b][b][b]//设置为总能垂直滑动就OK了。[/b][/b][/b][/b][/b][b][/b]
[b][b]6、workspace — project — targets 讲解[/b][/b]

一个工作空间可以包含多个项目,一个项目可以包含多个目标(生成物)。
一个项目中根据运行的targets不同,可以进行不同的编译设置,project是基础父类,targets是子类,targets的设置会覆盖project的设置。
[b][b]7、绘画虚线, drawRect绘画frame未定的情况[/b][/b]
[b][/b] [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方法中,进行绘画。[b][b][b]8、APP 启动页不更新[b][/b][/b][/b][/b]
修改了LaunchScreen.xib 后,模拟器上显示正常,但是真机上没有更新。
原因: 应用缓存
解决:真机上删除APP,重启手机,重新安装APP。[b][b][/b][/b]
[b][b][b][b]9、判断是否为gif/png图片的正确姿势[/b][/b]
[/b][/b]
//通过图片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);



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息