热更新衍生出来的问题:

前两天都在说iOS热更新的问题,结果今天就撞枪口上了,真的!审核被拒了,当然这并不是在我自己的项目使用了什么RN,或者JSPath等的问题,是个推!!在热更新出来的第一时间,高德就更新了自己的SDK,个推的今天才更新的,没错就是今天!下面是苹果审核被拒的一些内容,可以给个参考,只要是下面这类型的都是最新的热更新的问题。它所说的问题,因为项目是原生的能想到的只有第三方SDK会用,上网查了一下而又涉及到这个的SDK我自己用的也只有个推!

恩,你只能去更新个推的SDK,结果Cocopods就出现这个错误![!] Unable to satisfy the following requirements:

这个你在cd到项目文件,终端执行   pod update --verbose  就可以解决!(提示:这里时间会久一点,耐心等!)

警告继续:

在Xcode中,警告这个东西还是很烦人的!下面简单的说两个消除警告的技巧!

第一:加入你使用SVN或者Git在管理代码,这当中你要是删除了一些你创建了又觉得没用的文件。就会有这样的一堆file missing警告!!!像下面这个同学的情况,要是你项目有一千多个警告,看着肯定觉得烦!

升级xcode8后,提示一堆file missing警告

其实,在这篇博客的最后面是有正解的:Xcode->Preferences->Source->Enable Source Control 勾勾去掉!

解释一下这个Enable Source Control:启用/禁用XCode自带Source Control Manager(SCM)。

第二种:这种警告就和SVN或者Git就没有什么关系了

比如下面的注释时候的警告,反正我知道环信SDK的确是一堆中文注释完了之后再加一堆的英文注释,这个到可以理解,毕竟是要走向世界的!好了,消除警告先。

这样操作:

点击我们选中的 Reveal in Log ,你就会看到下面这样的文字:

大家看到红线下面上面的 [-Wdeprecated-declrations],方法就在这里,你把-W换成 -Wno- 再去掉方括号,剩下的就是我们要用的,比如这里的就是: -Wno-deprecated-declrations

然后在我们项目的Build Settings 中查找 Other Waring Flags,添加 -Wno-deprecated-declrations,这 deprecated-declrations类型的警告就不再会出现。

(说明:上面的-Wno-deprecated-declrations并不是消除环信SDK警告要输入的,只是给大家说一下整个的操作步骤!)

图片的拉伸处理:

先说一个最常见的我们经常会见到的聊天的时候消息显示框:

在我们经常用到拉伸中,你经常看到的imageView.image属性,这里面的image是根据imageView的大小拉伸的。这样子的缺陷大家也都知道,会变形!

下面三个是我们经常用到的拉伸图片的方法:

 /*- (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight __TVOS_PROHIBITED- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets NS_AVAILABLE_IOS(5_0); // create a resizable version of this image. the interior is tiled when drawn.- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets resizingMode:(UIImageResizingMode)resizingMode NS_AVAILABLE_IOS(6_0); // the interior is resized according to the resizingMode*/

我们一个一个说说,第一个方法我们经常用到在聊天消息框的拉伸,下面是代码和效果图的对比:

解释一下下面方法可拉伸的范围都是距离leftCapWidth后的1竖排像素,和距离topCapHeight后的1横排像素。比如下面代码的意思是将图片从左起第2列,上起第2行,坐标为(2,2)的像素点进行复制。

    UIImage * image1 = [UIImage imageNamed:@"image"];UIImageView * imageView1 = [[UIImageView alloc]initWithImage:image1];imageView1.frame = CGRectMake(50, 100, 300, 60);[self.view addSubview:imageView1];UIImage * image2 = [UIImage imageNamed:@"image"];image2 = [image2 stretchableImageWithLeftCapWidth:1 topCapHeight:1];UIImageView * imageView = [[UIImageView alloc]initWithImage:image2];imageView.frame = CGRectMake(50, 200, 300, 60);[self.view addSubview:imageView];

再说说第二个方法:

- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets NS_AVAILABLE_IOS(5_0); // create a resizable version of this image. the interior is tiled when drawn

下面是具体的使用:

UIImage * image1 = [UIImage imageNamed:@"image"];
UIImageView * imageView1 = [[UIImageView alloc]initWithImage:image1];
imageView1.frame = CGRectMake(50, 100, 300, 60);
[self.view addSubview:imageView1];UIImage * image2 = [UIImage imageNamed:@"image"];
image2 = [image2 resizableImageWithCapInsets:UIEdgeInsetsMake(1, 1, 1, 1)];
UIImageView * imageView = [[UIImageView alloc]initWithImage:image2];
imageView.frame = CGRectMake(50, 200, 300, 60);
[self.view addSubview:imageView];

看完下面的效果图我们说注意点:(左边是原图,右边是拉伸过的)

                 

注意点:上面的方法有一点需要注意,这个方法默认使用的拉伸模式是区域复制的,它的意思是把要赋值的区域进行赋值,直到满足显示区域!

最后一个方法需要注意的就是后面的枚举,你可以把上面的方法用这个代替了,看看效果,体会一下这个复制和渐变的区别!

/* UIImage will implement the resizing mode the fastest way possible whileretaining the desired visual appearance.Note that if an image's resizable area is one point then UIImageResizingModeTileis visually indistinguishable from UIImageResizingModeStretch.typedef NS_ENUM(NSInteger, UIImageResizingMode) {UIImageResizingModeTile,      // 把要拉伸的区域进行复制UIImageResizingModeStretch,   // 把要拉伸的区域进行渐变拉伸}; */

转载于:https://www.cnblogs.com/zhangxiaoxu/p/6074047.html

常用开发技巧系列(三)相关推荐

  1. EXCEL常用小技巧系列01----排名

    EXCEL常用小技巧系列01----排名 在工作中,时常需要对数据进行各种方式的排名,以下总结几种常用的排名方式: 一:有相同数字时,显示同一排名且下一排名不连续 公式:=SUMPRODUCT((数据 ...

  2. RISC-V IDE MRS使用笔记(七) :常用开发技巧汇总

    RISC-V IDE MRS使用笔记(七) :常用开发技巧汇总 Q1: MRS调试时如何查看外设寄存器内容? A1: 在调试配置界面添加相应的.svd文件. Q2: MRS如何调用数学库? A2: # ...

  3. Go 学习笔记(83)— 编码规范及常用开发技巧

    UBER 开源的 Go 语言开发规范 1. 规范指南 1.1 包名 package 的命名应该遵循如下原则: 只由小写字母组成.不包含大写字母和下划线等字符: 简短并包含一定的上下文信息.例如 tim ...

  4. 中移链合约常用开发介绍(三)工程化开发智能合约

    一.目的 本文档基于中移链合约常用开发,介绍了工程化开发智能合约的方法.本文档将从自动生成项目展开,适合刚接触合约开发的开发人员入门工程化开发. 二.智能合约介绍 区块链作为一种分布式可信计算平台,去 ...

  5. [C# 开发技巧系列]如何动态设置屏幕分辨率

    原文 http://www.cnblogs.com/zhili/archive/2013/05/23/ChangeResolution.html 因为最近在MSDN论坛和stackflow中看到一些朋 ...

  6. [C# 开发技巧系列] 使用C#操作幻灯片

    本专题概要 引言 实现思路 遥控幻灯片程序的实现 小结 一.引言 记得老师讲课的时候,经常会用PPT遥控翻页笔来遥控幻灯片来给我们讲课,当时觉得非常有趣,由于这段时间接触了VSTO相关的开发,了解到了 ...

  7. Unity3D优化技巧系列三

    笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,国家专利发明人;已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D ...

  8. 【开发者portal在线开发插件系列三】字符串 及 可变长度字符串

    基础篇 基础场景见上面两个帖子,这里单独说明字符串和可变长度字符串的用法. 话不多说,开始今天的演(表)示(演) Profile和插件开发 添加一个string类型的属性: 在插件里添加一条数据上报消 ...

  9. W ndows10如何清理使用痕迹,Windows10操作技巧系列——删除最常用,最常访问,快速访问记录...

    Win10除了有传统意义上的,网络历史记录外,还包含了两种本地文件浏览记录,分别是资源管理器中的"快速访问"记录,和开始菜单以及任务栏中的"最常用"" ...

最新文章

  1. Linux01-Linux高级特殊权限SUID详解25
  2. QLibrary执行load失败
  3. mysql 查询近几天的数据
  4. 【蓝桥杯Java_C组·从零开始卷】第二节(附)、if与switch效率比较(千万次/一亿次)
  5. 怎么才能在百度上看到自己发布的博文?
  6. clob oracle 连接_Oracle clob 操作
  7. Jquery学习总结(1)——Jquery常用代码片段汇总
  8. Ubuntu Mysql安装配置
  9. PHP学习笔记(八)
  10. 【To Do! 重点 正则表达式】LeetCode 65. Valid Number
  11. 服务器mysql占用_mysql占用服务器cpu过高的原因以及解决办法
  12. 显示器尺寸对照表_求解显示器屏幕尺寸对照表一般是多少?
  13. 教你给视频画面打马赛克
  14. 微信公众平台测试号申请、使用HBuilder X与微信开发者工具实现授权登陆功能以及单点登录
  15. 安卓逆向和手游辅助学习路线
  16. php获取手机的mac地址,Android手机获取Mac地址的几种方法
  17. 关于 nor it's doXxx() equivalent is defined in action class 的问题解决办法
  18. 【将要进入大学的你该如何学习?如何避免大学生活的各种坑?来看看这篇文章吧!】来自一名大三老学长对将要入学的大一新生的大学生活建议
  19. 清华发长文回应校园疫情防控工作,提前开通学生返乡专线
  20. 自动特征构建工具——featuretools

热门文章

  1. 退出python命令行-退出python命令
  2. python利器怎么编程-Linux 利器- Python 脚本编程入门(一)
  3. python开发微信小程序-微信小程序开发:python+sanic 实现小程序登录注册
  4. python对excel某一列求和-96、python操作excel求和
  5. python读取txt文件写入-Python读写txt文本文件的操作方法全解析
  6. python教材免费版-北大内部教材python版算法与数据结构PDF电子书免费下载
  7. python编程做什么工作-学python编程语言能找什么工作
  8. python的运行窗口-在 Python 窗口中执行工具
  9. python待遇如何-老男孩学Python后就业如何?Python待遇高吗?
  10. python哪里下载import包-python 如何找到import的包