zoukankan      html  css  js  c++  java
  • 学习IOS开发UI篇--手码搭建UI界面和懒加载设计

    1.使用代码创建控件

    ========================================

    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> 监听方法的第二个参数是监听控件的事件

    2. viewDidLoad

    ========================================

    viewDidLoad是视图加载完成后调用的方法,通常在此方法中执行视图控制器的初始化工作

    viewDidLoad方法中,一定不要忘记调用父类的方法实现!

    [super viewDidLoad];

    3.手码懒加载创建控件的步骤

    ========================================

    1> 定义控件属性,注意:属性必须是strong的,示例代码如下:

    @property (nonatomic, strong) UIImageView *icon;

    2> 在属性的getter方法中实现懒加载,示例代码如下:

    - (UIImageView *)icon

    {

        if (!_icon) {

            // 计算位置参数

            CGFloat imageW = 200;

            CGFloat imageX = (320 - imageW) / 2;

            CGFloat imageH = 200;

            CGFloat imageY = 80;

            // 实例化图像视图

            _icon = [[UIImageView alloc] initWithFrame:CGRectMake(imageX, imageY, imageW, imageH)];

            // 将图像视图添加到主视图

            [self.view addSubview:_icon];

        }

        return _icon;

    }

    使用懒加载的好处:

    1> 不必将创建对象的代码全部写在viewDidLoad方法中,代码的可读性更强

    2> 每个控件的getter方法中分别负责各自的实例化处理,代码彼此之间的独立性强,松耦合

    3. 使用Plist文件

    ========================================

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

    加载方法:

    NSString *path = [[NSBundle mainBundle] pathForResource:@"ImageData" ofType:@"plist"];

    _imageList = [NSArray arrayWithContentsOfFile:path];

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

    ====================================================================================

    1. Images.xcassets中的素材

    ========================================

    1只支持png格式的图片

    2图片只支持[UIImage imageNamed]的方式实例化,但是不能从Bundle中加载

    3在编译时,Images.xcassets中的所有文件会被打包为Assets.car的文件

    2. UIImageView的序列帧动画

    ========================================

    // 0. 是否正在动画

    [self.tom isAnimating];

    // 1. 设置图片的数组

    [self.tom setAnimationImages:arrayM];

    // 2. 设置动画时长,默认每秒播放30张图片

    [self.tom setAnimationDuration:arrayM.count * 0.075];

    // 3. 设置动画重复次数,默认为0,无限循环

    [self.tom setAnimationRepeatCount:1];

    // 4. 开始动画

    [self.tom startAnimating];

    // 5. 动画播放完成后,清空动画数组

    [self.tom performSelector:@selector(setAnimationImages:) withObject:nil afterDelay:self.tom.animationDuration];

    3. UIImage imageNamed

    ========================================

    在图片使用完成后,不会直接被释放掉,具体释放时间由系统决定,适用于图片小,常用的图像处理

    如果要释放快速释放图片,可以使用[UIImage imageWithContentsOfFile:path]实例化图像

    4.方法重构的策略

    ========================================

    1> 将具有共性的代码复制到一个新的方法

    2> 根据不同的调用情况,增加方法的参数

    提示:在写程序时不要着急重构,有时候把代码先写出来,更容易看清楚如何重构才会更好!

    5. Bundle中的图片素材

    ========================================

    往项目中拖拽素材时,通常选择

    1> Destination: 勾选

    2> Folders:

        选择第一项:黄色文件夹

            Xcode中分文件夹,Bundle中所有所在都在同一个文件夹下,因此,不能出现文件重名的情况

            特点:

            *** 可以直接使用[NSBundle mainBundle]作为资源路径,效率高!

            *** 可以使用[UIImage imageNamed:]加载图像

        选择第二项:蓝色文件夹

            Xcode中分文件夹,Bundle中同样分文件夹,因此,可以出现文件重名的情况

            特点:

            *** 需要在[NSBundle mainBundle]的基础上拼接实际的路径,效率较差!

            *** 不能使用[UIImage imageNamed:]加载图像

    6.文件管理

    ========================================

    [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 ;

  • 相关阅读:
    java基础知识——7.断点调试与数据加密
    Hibernate最基础配置的记忆方式
    Redis集群命令
    VMware Workstation下centos的使用
    Redis入门
    Shell脚本
    使用Java遇到的问题
    使用Linux
    压缩包安装MySQL服务
    安装windows+ubuntu双系统
  • 原文地址:https://www.cnblogs.com/zhaoyan/p/3741923.html
Copyright © 2011-2022 走看看