前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >iOS小技能: 用纯代码开发界面的过程 & 图片使用的相关注意事项

iOS小技能: 用纯代码开发界面的过程 & 图片使用的相关注意事项

作者头像
公众号iOS逆向
发布2022-08-22 11:24:33
3410
发布2022-08-22 11:24:33
举报
文章被收录于专栏:iOS逆向与安全

前言

用纯代码开发的过程:

  1. 确定界面元素,要有什么内容
  2. 用代码搭建界面
  3. 编写代码

I 基础知识储备

1.1 代码封装抽取思路

  1. 将相同的代码放到一个新方法中
  2. 将不同的值(button.tag)当做方法的参数传递进来:在oc 中通常方法的第一个参数为:触发该方法的对象 --根据需要进行参数调整

1.2 不小心修改头文件的解决方法

  1. 对~/Library/Developer/Xcode/DerivedData 目录文件进行清理
  2. command+B

1.3 自动补齐(数字的格式化)

代码语言:javascript
复制
 NSString *pictureNamePrefix =[ NSString  stringWithFormat:@"drink_%02d.jpg",i];//不到两位的自动补零;不到两位的自动补零 %04d: 自动补齐四位,不足四位的,就在数字前面加0

1.3 @property

1.创建了getter & setter方法 2. 生产一个变量名为带_ 的成员变量;直接读取成员变量不会经过getter&setter方法

采用懒加载来解决代码执行顺序的存在依赖问题:采用懒加载,即通过重写getter方法实现,达到的效果是,在对象最需要的时候创建

重写getter方法:

  1. 资源属性的懒加载
  2. 控件的懒加载

1.4 重写getter 和setter方法的注意点

self.属性 和_属性的区别:@property 生产一个变量名为带_ 的成员变量;直接读取成员变量不会经过getter&setter方法

  1. 重写getter方法的时候避免使用self.属性,否则将出现循环调用getter
  2. 解决问题1,就应该采用_属性进行成员变量的读取,直接读取成员变量不会经过getter&setter方法。

II 图片使用的相关注意事项

2.1 推荐使用png格式

  1. png: 常常放置于Assets.xcassets目录中,作为控件的背景图片。

压缩 较高,无损压缩,解压效率高,对CPU消耗少

  1. jpg, 常常放置于Supporting Files目录

1)压缩比 比较高,通常用于照片、网页 2)属于有损压缩(噪点noise) 3)解压时对cpu 消耗大--意味着,慢、费电

2.2 关于图像的实例化

方式一:有缓存加载图片

代码语言:javascript
复制
       
+ (UIImage *)imageNamed:(NSString *)name 系统推荐使用的方法,但图像实例化之后的对象释放由系统负责。
//       [arrayImage addObject: [UIImage imageNamed:pictureNamePrefix]];//参数为图片名称,png 格式的可以不加扩展名

方式二:无缓存方式加载图片(提示、如果放置于Assets.xcassets目录中的图片不能使用imageWithContentsOfFile:path进行加载;只能使用imageName进行加载,即内存由系统负责了)

代码语言:javascript
复制
//方式二:无缓存方式加载图片-指定扩展名
//        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 动画结束之后清除帧动画数组

代码语言:javascript
复制
{      //开始动画
    [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];
 
}

清除内存的代码简化

代码语言:javascript
复制
 [self.imageList performSelector:@selector(setAnimationImages:) withObject:nil afterDelay:self.imageList.animationDuration];

III 常用快捷键

  1. 文件跳转栏:Control+6(键入方法/变量名+Enter跳转)
  2. 快速帮助: 在类或者方法名上执行Option + Left-click操
  3. 一次性修改一个scope里的变量名:

点击该变量,出现下划虚线,然后command+control+E激活所有相同变量,然后进行修改。

  1. 删除一个词:option+delete
  2. 文件内快捷搜索:

先点亮想要搜索的词,然后command+E将该次放入剪贴板,然后command+G来向下遍历该词,shift+command+G向上遍历。

  1. 前后两行交换:command+option+[ 或 ]
  2. 不同窗口间切换:command+`
  3. 前进和后退:command+control+ → 或 ←
  4. 折叠代码块:command+option+ → 或 ←
  5. debug:

下一行:F6、进入方法:F7、跳出方法:F8 全速执行:command+control+Y clear debug console:command+K

see also

iOS解决压缩之后图片模糊的问题

https://blog.csdn.net/z929118967/article/details/105414506

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-06-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 iOS逆向 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • I 基础知识储备
    • 1.1 代码封装抽取思路
      • 1.2 不小心修改头文件的解决方法
        • 1.3 自动补齐(数字的格式化)
          • 1.3 @property
            • 1.4 重写getter 和setter方法的注意点
            • II 图片使用的相关注意事项
              • 2.1 推荐使用png格式
                • 2.2 关于图像的实例化
                  • 2.3 动画结束之后清除帧动画数组
                  • III 常用快捷键
                  • see also
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档