iOS小技能: 用纯代码开发界面的过程 & 图片使用的相关注意事项
前言
用纯代码开发的过程:
- 确定界面元素,要有什么内容
- 用代码搭建界面
- 编写代码
I 基础知识储备
1.1 代码封装抽取思路
- 将相同的代码放到一个新方法中
- 将不同的值(button.tag)当做方法的参数传递进来:在oc 中通常方法的第一个参数为:触发该方法的对象 --根据需要进行参数调整
1.2 不小心修改头文件的解决方法
- 对~/Library/Developer/Xcode/DerivedData 目录文件进行清理
- command+B
1.3 自动补齐(数字的格式化)
NSString *pictureNamePrefix =[ NSString stringWithFormat:@"drink_%02d.jpg",i];//不到两位的自动补零;不到两位的自动补零 %04d: 自动补齐四位,不足四位的,就在数字前面加0
1.3 @property
1.创建了getter & setter方法 2. 生产一个变量名为带_ 的成员变量;直接读取成员变量不会经过getter&setter方法
采用懒加载来解决代码执行顺序的存在依赖
问题:采用懒加载,即通过重写getter方法实现,达到的效果是,在对象最需要的时候创建
重写getter方法:
- 资源属性的懒加载
- 控件的懒加载
1.4 重写getter 和setter方法的注意点
self.属性 和_属性的区别:@property 生产一个变量名为带_ 的成员变量;直接读取成员变量不会经过getter&setter方法
- 重写getter方法的时候避免使用self.属性,否则将出现循环调用getter
- 解决问题1,就应该采用_属性进行成员变量的读取,直接读取成员变量不会经过getter&setter方法。
II 图片使用的相关注意事项
2.1 推荐使用png格式
- png: 常常放置于Assets.xcassets目录中,作为控件的背景图片。
压缩 较高,无损压缩,解压效率高,对CPU消耗少
- jpg, 常常放置于Supporting Files目录
1)压缩比 比较高,通常用于照片、网页 2)属于有损压缩(噪点noise) 3)解压时对cpu 消耗大--意味着,慢、费电
2.2 关于图像的实例化
方式一:有缓存加载图片
+ (UIImage *)imageNamed:(NSString *)name 系统推荐使用的方法,但图像实例化之后的对象释放由系统负责。
// [arrayImage addObject: [UIImage imageNamed:pictureNamePrefix]];//参数为图片名称,png 格式的可以不加扩展名
方式二:无缓存方式加载图片(提示、如果放置于Assets.xcassets目录中的图片不能使用imageWithContentsOfFile:path进行加载;只能使用imageName进行加载,即内存由系统负责了)
//方式二:无缓存方式加载图片-指定扩展名
// NSArray *arrayPicture = [pictureNamePrefix componentsSeparatedByString:@"."];//从字符中分隔成2个元素的数组(图片名+扩展名)
// NSString *path = [[NSBundle mainBundle] pathForResource:arrayPicture[0] ofType: arrayPicture[1]];//获取图片的全路径
//方式二:无缓存方式加载图片-不指定扩展名
NSString *path = [[NSBundle mainBundle] pathForResource:pictureNamePrefix ofType:nil];
[arrayImage addObject:[ UIImage imageWithContentsOfFile:path]];
/Users/devzkn/Library/Developer/CoreSimulator/Devices/949ED3EA-A51B-4B5C-99B1-8069EB99E684/data/Containers/Bundle/Application/2B2B99A6-4FBC-4171-BE4F-ECA1B5AA2590/09-tomcat.app/angry_00.jpg
有/无缓存加载图片两种方式的内存分析
2.3 动画结束之后清除帧动画数组
{ //开始动画
[self.imageList startAnimating];
//释放资源:动画结束之后清除帧动画数组
//nvokes a method of the receiver on the current thread using the default mode after a delay.
[self performSelector:@selector(cleanUpAnimationsArray) withObject:nil afterDelay:self.imageList.animationDuration];//@interface NSObject (NSDelayedPerforming)
}
- (void)cleanUpAnimationsArray{
NSLog(@"%s ",__func__);
//动画结束之后清除帧动画数组
[self.imageList setAnimationImages:nil];
}
清除内存的代码简化
[self.imageList performSelector:@selector(setAnimationImages:) withObject:nil afterDelay:self.imageList.animationDuration];
III 常用快捷键
- 文件跳转栏:Control+6(键入方法/变量名+Enter跳转)
- 快速帮助: 在类或者方法名上执行Option + Left-click操
- 一次性修改一个scope里的变量名:
点击该变量,出现下划虚线,然后command+control+E激活所有相同变量,然后进行修改。
- 删除一个词:option+delete
- 文件内快捷搜索:
先点亮想要搜索的词,然后command+E将该次放入剪贴板,然后command+G来向下遍历该词,shift+command+G向上遍历。
- 前后两行交换:command+option+[ 或 ]
- 不同窗口间切换:command+`
- 前进和后退:command+control+ → 或 ←
- 折叠代码块:command+option+ → 或 ←
- debug:
下一行:F6、进入方法:F7、跳出方法:F8 全速执行:command+control+Y clear debug console:command+K
see also
iOS解决压缩之后图片模糊的问题
https://blog.csdn.net/z929118967/article/details/105414506
相关文章
- iOS小技能:装箱和拆箱(boxing、unboxing)
- iOS小技能:本地化(Internationalization & Localization)
- iOS安全:敏感逻辑的保护方案(敏感信息的安全设计)
- iOS证书申请_安装证书
- iOS图片像素点颜色处理
- 苹果发布 iOS 16 公开测试版,一起来看看这几项新功能
- AnyMP4 iOS Cleaner for mac(IOS文件清理工具)v1.0.16激活版
- 【IOS实用玩机技巧】爱思助手 IPA 签名功能常见问题汇总(iOS上架)
- 【iOS 开发】iOS 开发 简介 (IOS项目文件 | MVC 模式 | 事件响应机制 | Storyboard 控制界面 | 代码控制界面 | Retina 屏幕图片适配)
- 我们如何将 iOS 应用启动时间减少 60%
- IOS开发之代码之九宫格详解手机开发
- iOS开发实践之MD5加密详解手机开发
- iOS开发系列课程(05) — 导航视图控制器详解手机开发
- iOS–app自定义相册–创建相簿,存储图片到手机详解手机开发
- 探索Linux系统:在iOS上下载(linux系统ios下载)
- Linux下开发iOS应用:挑战还是机会?(linux做ios开发)
- 让Linux开发iOS应用变得更简单(linux开发ios应用)
- 比较iOS和Linux:谁更具优势?(ios和linux)
- 基于Linux环境下iOS应用开发实践(linux下开发ios)
- iOS访问MySQL数据库的实战技术(ios访问mysql)
- 把 Linux 安装到 iOS 设备上的步骤(ios安装linux)
- iOS开发与Linux的技术融合(ios开发linux)
- iOS 轻松登录 Oracle 数据库(ios 登陆oracle)
- 谁说 iOS 就不适用Oracle(ios oracle软件)
- AMP与Oracle结合提升数据库性能($amp oracle)