• IOS学习笔记 -- 基础


    1、在OC中,不允许直接修改“对象”的“结构体属性”的“成员变量”,但是允许修改“对象”的“结构体属性”

    修改结构体属性的成员变量方法如下:

    1> 使用临时变量记录对象的结构体属性
    2> 修改临时变量的属性
    3> 将临时变量重新赋值给对象的结构体属性

    2. 在程序开发中需要避免出现魔法数字(Magic Number)
    使用枚举类型,可以避免在程序中出现魔法数字

    1> 枚举类型实质上就是一个整数,其作用就是用来替代魔法数字
    2> 枚举类型中,指定了第一个整数之后,后面的数字会递增

    3、 frame & bounds & center

    1> frame可以修改对象的位置和尺寸,在Use Autolayout下无法缩放
    2> bounds可以修改对象的尺寸
    3> center可以修改对象的位置

    4. 首尾式动画
    // beginAnimations表示此后的代码要“参与到”动画中
    [UIView beginAnimations:nil context:nil];
    // setAnimationDuration用来指定动画持续时间
    [UIView setAnimationDuration:2.0];

    // 要参与动画的代码

    ......

    // commitAnimations,将beginAnimation之后的所有动画提交并生成动画
    [UIView commitAnimations];

    5. transform属性
    在OC中,通过transform属性可以修改对象的平移、缩放比例和旋转角度

    常用的创建transform结构体方法分两大类

    1> 创建“基于控件初始位置”的形变
    CGAffineTransformMakeTranslation // 位移
    CGAffineTransformMakeScale         // 缩放
    CGAffineTransformMakeRotation    // 旋转

    2> 创建“基于transform参数”的形变
    CGAffineTransformTranslate         // 位移 
    CGAffineTransformScale               // 缩放
    CGAffineTransformRotate             // 旋转

    补充:
    在OC中,所有跟角度相关的数值,都是弧度值,180° = M_PI,正数表示顺时针旋转,负数表示逆时针旋转

    6、使用代码创建控件
    在OC开发中,Storyboard中的所有操作都可以通过代码实现。

    使用代码创建控件的步骤如下:

    1> 使用控件对应类创建对象
    2> 设置对象属性:framecolor extimageackgroundImage……
    3> [self.view addSubview:btn];将控件添加到视图

    设置控件监听方法的示例代码如下:
    [btn addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside];

    提示:
    1> addTarget方法定义在UIControl类中,这意味着可以给所有继承自UIControl类的对象添加监听方法
    2> 监听方法的第一个参数就是对象本身
    3> 监听方法的第二个参数是监听控件的事件

    7、viewDidLoad
    viewDidLoad是视图加载完成后调用的方法,通常在此方法中执行视图控制器的初始化工作
    在viewDidLoad方法中,一定不要忘记调用父类的方法实现!
    [super viewDidLoad];

    8、懒加载创建控件
    1> 定义控件属性,注意:属性必须是strong的。
    2> 在属性的getter方法中实现懒加载,示例代码如下:
    - (UIImageView *)icon
    {
      if (!_icon) {
        _icon = [[UIImageView alloc] init];

        ......
        [self.view addSubview:_icon];
      }
      return _icon;
    }

    使用懒加载的好处:
    1> 不必将创建对象的代码全部写在viewDidLoad方法中,代码的可读性更强
    2> 每个控件的getter方法中分别负责各自的实例化处理,代码彼此之间的独立性强,松耦合

    9、 使用Plist文件
    使用Plist文件的目的:将数据与代码分离

    加载方法:
    NSString *path = [[NSBundle mainBundle] pathForResource:@"name" ofType:@"plist"];
    NSArray *array= [NSArray arrayWithContentsOfFile:path];

    提示:通常在方法中出现File字眼,通常需要传递文件的全路径作为参数

    10、Images.xcassets中的素材
    1> 只支持png格式的图片
    2> 图片只支持[UIImage imageNamed]的方式实例化,但是不能从Bundle中加载
    3> 在编译时,Images.xcassets中的所有文件会被打包为Assets.car的文件

    11、 UIImageView的序列帧动画
    ========================================
    // 1. 是否正在动画
    [self.imageView isAnimating];
    // 2. 设置图片的数组
    [self.imageView setAnimationImages:arrayImage];
    // 3. 设置动画时长,默认每秒播放30张图片
    [self.imageView setAnimationDuration:arrayImage.count * 0.005];
    // 4. 设置动画重复次数,默认为0,无限循环
    [self.imageView setAnimationRepeatCount:1];
    // 5. 开始动画
    [self.imageView startAnimating];
    // 6. 动画播放完成后,清空动画数组
    [self.imageView performSelector:@selector(setAnimationImages:) withObject:nil afterDelay:self.imageView.animationDuration];

    12、UIImage imageNamed
    在图片使用完成后,不会直接被释放掉,具体释放时间由系统决定,适用于图片小,常用的图像处理
    如果要释放快速释放图片,可以使用[UIImage imageWithContentsOfFile:path]实例化图像

    13、文件管理 [NSFileManager defaultManager]

    常用方法
    1> 判断文件是否存在
    - (BOOL)fileExistsAtPath:(NSString *)path;
    2> 将文件从源路径复制到目标路径
    - (BOOL)copyItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error;
    3> 删除文件
    - (BOOL)removeItemAtPath:(NSString *)path error:(NSError **)error;
    4> 返回指定路径中的文件列表
    - (NSArray *)contentsOfDirectoryAtPath:(NSString *)path error:(NSError **)error ;

  • 相关阅读:
    Quartz使用总结
    ubuntu 16.04 下载源
    samba搭建
    搭建FTP服务器
    ubuntu 快捷图标
    mysql Fatal error encountered during command execution
    vs2013调试的时候卡顿
    javascript父窗口与子窗口通信
    mysql设置字体
    前台声明变量
  • 原文地址:https://www.cnblogs.com/wentianblog/p/3742585.html
Copyright © 2020-2023  润新知