zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

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

iosamp代码开发 使用 过程 图片 技能
2023-06-13 09:11:18 时间

前言

用纯代码开发的过程:

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

I 基础知识储备

1.1 代码封装抽取思路

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

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

  1. 对~/Library/Developer/Xcode/DerivedData 目录文件进行清理
  2. 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. 资源属性的懒加载
  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 关于图像的实例化

方式一:有缓存加载图片

       
+ (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 常用快捷键

  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