首页 > 其他分享 >iOS开发之最近的小知识点总结一

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

时间:2022-11-28 17:04:48浏览次数:42  
标签:总结 知识点 return APP iOS case NSString data png


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





标签:总结,知识点,return,APP,iOS,case,NSString,data,png
From: https://blog.51cto.com/u_15894905/5892254

相关文章

  • iOS开发之模仿语音聊天时,显示的音量图
    因为项目中有涉及到语音的内容,所以在这里实现一下说话时语音的音量图的展示具体内容查看代码,有注释语音内容的工具类:staticidinstance;#pragmamark-单例+(instancetyp......
  • iOS开发之最近小知识总结二
    有好多都是基础知识,仅供参考,谢谢1、autolayout自动布局autoLayout需要在​​-(void)viewDidLoad​​​方法执行完后生效,所以需要在​​-(void)viewDidAppear:(BOOL)ani......
  • iOS开发之字数不一的多标签Demo
    有朋友让帮他写一个封装的字数不一的多标签视图,所以今天将代码展示一下,供大家学习代码中封装了两种方法,分别是:1.传递数组,数组中是NSString类型的方法;2.传递数组,数组中是NSDi......
  • iOS开发之自己封装的提示框(警告框)样式BHAlertView
    最近需要使用到提示框(警告框)进行信息的展示和提醒,所以进行了一个类的封装,想用Swift调用此OC文件,但是发现有些困难,所以暂时先把OC代码进行展示,随后再好好研究一下在Swift中的......
  • 元数据规划与设计总结
    1.数仓领域元模型总览  元数据分类按照CWM会更容易认识与理解,但是使用MOF存储与设计会具有灵活的扩展和简化的存储能力。以下是对数据领域整个元数据模型层次进行分......
  • 11月28日内容总结——
    一、多表查询的两种方法方式1:连表操作innerjoin(内连接)select*fromempinnerjoindeponemp.dep_id=dep.id;只连接两张表中公有的数据部分leftjoin(左连接)......
  • Extjs相关知识点梳理
     store是一个为Ext器件提供record对象的存储容器,行为和属性都很象数据表方法:不列举继承来的方法Store(Objectconfig)构造,config定义为{autoLoad:B......
  • Docker容器内部端口映射到外部宿主机端口的方法总结
    好记性不如烂笔头,将docker容器端口映射到宿主机的方法做一个总结,方便后边忘记了能快速的查询。 首先需要注意:宿主机的一个端口只能映射到容器内部的某一个端口上,比如:80......
  • css 样式总结
    #css样式汇总*处理图片5px间距问题1.给父元素设置font-size:02.给img设置display:block3.给img设置vertical-align:bottom4.给......
  • 【正则】174-《JavaScript 正则迷你书》知识点小抄本(下)
    四、正则表达式回溯法原理概念理解起来比较容易。比如用 ​​​/ab{1,3}c/​​ 去匹配下面两个字符串。当匹配 ​​abbbc​​,按顺序匹配,到了第3个 ​​b​​ 后,直接......