开发问题笔记(五)

目录

1.图片URL中含有中文无法显示
2.CocoaPods更新慢的解决办法
3.Xcode字体设置
4.字符串转换问题
5.导航栏跳转奔溃问题
6.模拟器报错
7.账号过期报错
8.在设备上第一次安装APP时,不通过运行Xcode来注册,直接扫码打好的包安装
9.如何加快Xcode编译速度
10.解决低版本Xcode不支持高版本iOS真机调试的问题
11.pch与headerFile的创建及常用宏定义整理
12.高版本Xcode创建的项目,用低版本打开,报xib等错误
13.xcode中如何添加自定义字体
14.NSUserDefaults数据的存取
15.最原始的网络请求方法
16.如下图效果“小弹框”(类似QQ)
17.按钮通过tag获取
18.Xcode中模糊搜索设置
19.Xcode管理代码
20.SourceTree使用时出现的bug
21.表格视图局部刷新
22.在cell点击方法里面再次刷新造成的错误
23.switch...case 里面不能创建控件
24.系统提示框的使用
25.ios小数怎么保留3位
26.UITextFiled不弹键盘
27.照片压缩并转base64功能
28.cell滑动数据丢失bug
29.类似QQ小浮窗功能
30.类方法+和实例(对象)方法-的区别?

1.图片URL中含有中文无法显示

在开发的过程中经常会遇到记载图片的问题,一般由后台给我们提供图片的链接地址,我们使用第三方库进行记载,而在个别图片是带有汉字的,导致图片记载失败导致一些问题。针对这个问题是由于,我们在使用带有汉字的url请求时,汉字部分转码会出现错误。解决办法是将url进行UTF-8编码转换之后再请求,这样就能顺利加载出图片了

图片接口如:http: //7xq0ch.com1.z0.glb.clouddn.com//company/1521171384722/灰car5?e=1523763412&token=TwDqISTq2s5np1-

图片.png

2.CocoaPods更新慢的解决办法

使用CocoaPods来添加第三方类库,无论是执行pod install还是pod update都卡在了Analyzing dependencies不动;原因在于当执行以上两个命令的时候会升级CocoaPods的spec仓库,加一个参数可以省略这一步,然后速度就会提升不少。加参数的命令如下:

pod install --verbose --no-repo-update
pod update --verbose --no-repo-update
或者
pod install --no-repo-update
pod update --no-repo-update

3.Xcode字体设置

注意要选中右边黑色区域全部的;
相关链接:https://www.cnblogs.com/mengshu-lbq/archive/2012/12/24/2830859.html
推荐如下图片的格式

开发问题笔记(五)_第1张图片
WechatIMG27.jpeg

效果如下:


开发问题笔记(五)_第2张图片
WechatIMG33.jpeg

4.字符串转换问题

开发问题笔记(五)_第3张图片
屏幕快照 2018-05-11 下午7.36.35.png

5.导航栏跳转奔溃问题

奔溃在如下图位置

开发问题笔记(五)_第4张图片
屏幕快照 2018-05-13 上午12.50.48.png
开发问题笔记(五)_第5张图片
屏幕快照 2018-05-13 下午12.49.50.png

6.模拟器报错

开发问题笔记(五)_第6张图片
WechatIMG50.jpeg

7.账号过期报错

开发问题笔记(五)_第7张图片
屏幕快照 2018-05-14 上午11.25.38.png

8.在设备上第一次安装APP时,不通过运行Xcode来注册,直接扫码打好的包安装

开发问题笔记(五)_第8张图片
WechatIMG17.jpeg
开发问题笔记(五)_第9张图片
0BB7A83F-FA17-4212-AA79-A8E2A93E5A14.png

9.如何加快Xcode编译速度

https://www.jianshu.com/p/3b01979b2bf3

10.解决低版本Xcode不支持高版本iOS真机调试的问题

如图所示,如果手机系统很高,Xcode版本较低不支持就会报这个提示,解决方式就是下载相应的真机调试包加入即可。拖到存放的文件夹,路径是:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport

开发问题笔记(五)_第10张图片
屏幕快照 2018-07-17 下午1.37.48.png

相关链接:https://blog.csdn.net/xiangzhihong8/article/details/78360091

11.pch与headerFile的创建及常用宏定义整理

https://www.jianshu.com/p/7db116da7025

12.高版本Xcode创建的项目,用低版本打开,报xib等错误

开发问题笔记(五)_第11张图片
屏幕快照 2018-05-21 下午2.08.53.png

13.xcode中如何添加自定义字体

https://blog.csdn.net/sakulafly/article/details/46368173

14.NSUserDefaults数据的存取

开发问题笔记(五)_第12张图片
屏幕快照 2018-05-21 下午2.28.24.png

例子:登录成功时保存token,其他地方使用时调用取出来(这里主要是要取到access里面的东西,所以多写一个...)

全局宏
开发问题笔记(五)_第13张图片
保存
获取

15.最原始的网络请求方法

https://www.jianshu.com/p/c34f0740f178

16.如下图效果“小弹框”(类似QQ)

开发问题笔记(五)_第14张图片
屏幕快照 2018-05-21 下午3.45.32.png

https://github.com/lifution/Popover

17.按钮通过tag获取

按钮的tag值设置为100,然后通过下列方法取到该按钮
UIButton *todayButton = (UIButton *)[self.view viewWithTag:(100)];

18.Xcode中模糊搜索设置

设置成Text

开发问题笔记(五)_第15张图片
FD34334B-41D1-44DE-A33C-312ACF21680A.png

19.Xcode管理代码

直接用Xcode进行代码版本管理,参考http://www.jianshu.com/p/300f8fd043c5

20.SourceTree使用时出现的bug

在SourceTree中偏好设置将matching改成了其他报错如图二,解决方法如图二中命令

开发问题笔记(五)_第16张图片
开发问题笔记(五)_第17张图片

21.表格视图局部刷新

  • 刷新局部cell
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0]; 
[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath,nil] withRowAnimation:UITableViewRowAnimationFade];
  • 刷新局部section
NSIndexSet *indexSet = [[NSIndexSet alloc] initWithIndex:0]; 
[self.tableView reloadSections:indexSet withRowAnimation:UITableViewRowAnimationFade];

22.在cell点击方法里面再次刷新造成的错误

开发问题笔记(五)_第18张图片
WechatIMG1.jpeg
开发问题笔记(五)_第19张图片
图片.png

23. switch...case 里面不能创建控件

如下图,不能在里面创建,不然会报错,要创建就改成:if...else...

开发问题笔记(五)_第20张图片
图片.png
开发问题笔记(五)_第21张图片
屏幕快照 2018-07-02 下午5.55.57.png

24.系统提示框的使用

开发问题笔记(五)_第22张图片
图片.png
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"提示信息" message:@"您确定要申请借款吗?" preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {// 确定按钮回调
          
   [SVProgressHUD show];
   WS(weakSelf);
   NSDictionary *tokenAccess = [[NSUserDefaults standardUserDefaults]objectForKey:kTokenDateKey];
   NSString *tokenStr = [tokenAccess objectForKey:@"access"];
          
   [GHNetworkManager commitApplyLoanGoldsWithToken:tokenStr userid:_userID loanmoney:[_loanCountLB.text intValue] loancycle:_result1 loanrate:_result2 usedetails:_infoTextView.text success:^(id info) {
              
      weakSelf hideLoading];
      UToIdentifyStatusViewController *VC = [[UToIdentifyStatusViewController alloc]init];
      [weakSelf.navigationController pushViewController:VC animated:YES];
          } failure:^(NSError *error) {
      [weakSelf showFailedWithMessage:error.localizedDescription];
          }];
      }];
      UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {// 取消按钮回调
          
      }];
  [alertController addAction:okAction];
  [alertController addAction:cancelAction];
  [self presentViewController:alertController animated:YES completion:nil];

25.ios小数怎么保留3位

保留几位写几:

图片.png

26.UITextFiled不弹键盘

若UITextFiled只想有展示作用只需要把交互关掉userInteractionEnabled设成NO即可当作相当于UILabel来展示

27.照片压缩并转base64功能

问题场景:填写认证信息的时候需要从手机选择照片上传到服务器,像素较高,上传时间会很长,用户体验较差,所以通过压缩上传提高速度

解决方法1:常规压缩

// 图片压缩方法
- (NSData *)zipNSDataWithImage:(UIImage *)sourceImage{ //进行图像尺寸的压缩
    
    CGSize imageSize = sourceImage.size;//取出要压缩的image尺寸
    CGFloat width = imageSize.width; //图片宽度
    CGFloat height = imageSize.height; //图片高度 //1.宽高大于1280(宽高比不按照2来算,按照1来算)
    
    if (width>1280 || height>1280) {
        
        if (width>height) {
            
            CGFloat scale = height/width;
            width = 1280;
            height = width*scale;
        } else {
            
            CGFloat scale = width/height;
            height = 1280;
            width = height*scale;
        } //2.宽大于1280高小于1280
    } else if (width>1280 || height<1280) {
        
        CGFloat scale = height/width;
        width = 1280;
        height = width*scale; //3.宽小于1280高大于1280
        
    } else if (width<1280 || height>1280) {
        
        CGFloat scale = width/height;
        height = 1280;
        width = height*scale; //4.宽高都小于1280
    }
    
    UIGraphicsBeginImageContext(CGSizeMake(width, height));
    [sourceImage drawInRect:CGRectMake(0,0,width,height)];
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext(); //进行图像的画面质量压缩
    NSData *data = UIImageJPEGRepresentation(newImage, 1.0);
    
    if (data.length>100*1024) {
        
        if (data.length>1024*1024) {//1M以及以上
            
            data = UIImageJPEGRepresentation(newImage, 0.7);
        } else if (data.length>512*1024) {//0.5M-1M
            
            data = UIImageJPEGRepresentation(newImage, 0.8);
        } else if (data.length>200*1024) { //0.25M-0.5M
            
            data = UIImageJPEGRepresentation(newImage, 0.9);
        }
    }
    return data;
}

要用的地方回调:

开发问题笔记(五)_第23张图片
图片.png

解决方法2:第三方库ZipArchive压缩

大致代码:

开发问题笔记(五)_第24张图片
B1CD536477A3CB2940B7BE04AB364384.jpg

相关链接:
图片压缩:https://www.jianshu.com/p/0b1d10cf8f61
图片压缩第三方库:ZipArchive(https://github.com/ZipArchive/ZipArchive)
图片转base64:
https://www.jianshu.com/p/77d1370c0bab
https://www.jianshu.com/p/91979b5def90

28.cell滑动数据丢失bug

需要先做非判断处理,避免出现bug

开发问题笔记(五)_第25张图片
图片.png
开发问题笔记(五)_第26张图片
图片.png

相关链接:https://blog.csdn.net/u014131398/article/details/41593037

29.类似QQ小浮窗功能

开发问题笔记(五)_第27张图片
WechatIMG1022.jpeg

使用的地方调用:

开发问题笔记(五)_第28张图片
图片.png
开发问题笔记(五)_第29张图片
图片.png

相关链接:http://www.code4app.com/ios/PopoverView/50612fe56803fae712000000

30.类方法+和实例(对象)方法-的区别?

  • 类方法 +:类就可以调用,无需初始化创建一个对象

  • 实例(对象)方法 -:必须初始化创建对象进行调用

区别:

1.类方法被限定在类范围内,不能被类的实例调用(即脱离实例运行),alloc就是一种类方法;实例方法限定在对象实例的范围内(即实例化之前不能运行),init就是一种实例方法,被alloc方法返回的对象实例调用

2.实例方法是—类开头是- 实例方法是用实例对象访问,类方法的对象是类而不是实例,通常创建对象或者工具类。在实例方法里,根据继承原理发送消息给self和super其实都是发送给self在类方法里面self是其他的类的类方法,在类方法中给self发送消息只能发类方法self是类super也是什么时候用类方法,要创建一个实例时候获取一个共享实例,或者获取关于类的一些共有信息

问题描述:

需要的时候才创建弹框视图,不需要的不用创建,就可在封装的视图里面添加一个类方法进行判断什么时候需要创建视图,外部控制器调用就OK

你可能感兴趣的:(开发问题笔记(五))