5月28-懒加载,HUD蒙板,plist数据

基础UI控件综合使用

要求:

写一个程序,类似于淘宝的购物车,用户点击添加按钮,就会把一件商品加入到购物车中,等购物车满了,可以点击删除按钮删除购物
车中商品

设计思想:

把UIImageView和UITextView合并放到一个VIew中,然后用这个整体的View进行布局,点击添加按钮可以

发现几个控件是一个整体,可以先建立一个控件容器,然后把需要的控件都合并到这个容器中

  • 这样可以让一个控件移动大家一起移动
  • 使用UIView作为父控件,提高效率
  • 通过行号和列号来计算布局
  • HUD 指示器 蒙板 遮盖
  • 添加提示框,一般使用背景半透明,文字不用半透明
  • 延时调用的方法,可以用多种方法实现
  • blog
  • 加载plist数据,使用plist文件保存数据
  • 凡是参数名为file的传递的都是文件的全路径
  • 一个NSBundle是苹果推荐的对象资源包,用来访问已知队形的资源包内部的文件,可以用来获取文件的全路径
  • 项目里面的资源包,主资源包里面,项目中添加的资源都会被添加到主资源包种
  • 增加资源包得问题,一般来说要同时Copy和链接进去
    在项目中经常可能会发现明明文件和资源在项目里面,但是不能使用,很有可能是因为没有参与编译和打包,不能使用info.plist
    
  • 懒加载

  • 用到时候在去加载数据,用来提高效率
  • 重写Get方法,用来解决用得时候在加载
  • 模型是专门用来存放数据的对象
  • 九宫格排版控件算法
    详细使用
    按钮状态的控制
    在需要的时候添加指示器-HUD
    使用plist文件保存数据
    一个NSBundle对象对应一个资源包(图片、音频、视频、plis等文件)
    NSBundle的作用:用来访问与之对应的资源包内部的文件,可以用来获得文件的全路径
    项目中添加的资源都会被添加到主资源包中
    [NSBundle mainBundle]关联的就是项目的主资源包
        // 加载plist文件
        NSBundle *bundle = [NSBundle mainBundle];

        // 利用mainBundle获得主资源包中文件的全路径
        NSString *filepath = [bundle pathForResource:@"shops" ofType:@"plist"];

        // 凡是文件参数为File,传递的都是文件全路径
        self.shops = [NSArray arrayWithContentsOfFile:filepath];
    懒加载
    加载plist数据(比较大)
    懒加载:用到时再去加载,而且也只加载一次
    在调用的时候会用到Get方法
    通过重写Get方法,来实现懒加载
    // 重写shops的get方法,实现在调用的时候才加载数据 : 懒加载
    - (NSArray *) shops{
        if (_shops == nil){
            NSString *file = [[NSBundle mainBundle] pathForResource:@"shops" ofType:@"plist"];
            self.shops = [NSArray arrayWithContentsOfFile:file];
        }
        return _shops;
    }
    模型
    建立一个类用来封装数据 : 数据模型类
    instancetype用来定义一个自动获取返回值类型的函数
    // 使用构造函数方法把数据库文件内容赋值给自定义数据模型类
    - (instancetype) initWithDict:(NSDictionary *)Dict{
        if (self = [super init]){
            self.name = Dict[@"name"];
            self.icon = Dict[@"icon"];
        }
        return self;
    }

    // 类方法用来提供快捷初始化对象方法
    + (instancetype) initWihtDict:(NSDictionary *)Dict{
        return [[self alloc] initWithDict:Dict];
    }
    View的封装
    layoutSubviews的调用
    这个方法专门用来布局子控件,一般在这里设置子控件的frame
    当控件本身的尺寸发生改变的时候,系统会自动调用这个方法
    - (void)layoutSubviews
    {
        // 一定要调用super的layoutSubviews
        [super layoutSubviews];

        CGFloat shopW = self.frame.size.width;
        CGFloat shopH = self.frame.size.height;
        self.iconView.frame = CGRectMake(0, 0, shopW, shopW);
        self.nameLabel.frame = CGRectMake(0, shopW, shopW, shopH - shopW);
    }
    UIButton、UIImageView、UILabel的选择

    你可能感兴趣的:(5月28-懒加载,HUD蒙板,plist数据)