• 08-应用管理


    应用管理

    小案例简介

    • 接下来做一个非常综合的小案例---应用管理
    • 功能分析

    1. 以九宫格的形式展示应用信息

    2. 点击下载按钮后,做出相应的操作

    • 步骤分析

    • 加载应用信息

    • 根据应用的个数创建对应的view 监听下载按钮点击

    掌握

    • UIView的常见属性和方法
    • 九宫格计算方法
    • 字典转模型
    • Xib的使用
    • 自定义view(view的封装)
    • 简单的MVC

    作业

    • 点击下载按钮后变成不能点击的“已安装”
    • 中间慢慢弹出提示:已经成功安装xxx,然后提示会慢慢消失

    搭建九宫格的步骤

    • 明确每一块用的是什么view 明确每个view之间的父子关系
    • 先尝试逐个逐个添加格子,最后考虑使用for循环
    • 加载app数据,根据数据长度创建对应个数的格子
    • 添加格子内部的子控件
    • 给格子内部的子控件装配数据

    九宫格算法分析

    用模型取代字典的好处

    • 使用字典的坏处
    • 一般情况下,设置数据和取出数据都使用“字符串类型的key”,编写这些key时,编译器不会有任何友善提示,需要手敲

        dict[@"name"] = @"Jack";

        NSString *name = dict[@"name"];

    1. 手敲字符串key,key容易写错
    2. Key如果写错了,编译器不会有任何警告和报错,造成设错数据或者取错数据
    • 使用模型的好处

    1. 所谓模型,其实就是数据模型,专门用来存放数据的对象,用它来表示数据会更加专业

    2. 模型设置数据和取出数据都是通过它的属性,属性名如果写错了,编译器会马上报错,因此,保证了数据的正确性

    3. 使用模型访问属性时,编译器会提供一系列的提示,提高编码效率

        app.name = @"Jack”;

         NSString *name = app.name;

    字典转模型

       

    • 字典转模型的过程最好封装在模型内部
    • 模型应该提供一个可以传入字典参数的构造方法
    1. - (instancetype)initWithDict:(NSDictionary *)dict;
    2. + (instancetype)xxxWithDict:(NSDictionary *)dict;

    instancetype

    • instancetype在类型表示上,跟id一样,可以表示任何对象类型
    • instancetype只能用在返回值类型上,不能像id一样用在参数类型上
    • instancetype比id多一个好处:编译器会检测instancetype的真实类型

    字典转模型的过程

    Xib文件的使用

    • Xib文件可以用来描述某一块局部的UI界面
    • Xib文件的加载
    1. 方法1

      NSArray *objs = [[NSBundle mainBundle] loadNibNamed:@"MJAppView" owner:nil options:nil];

      这个方法会创建xib中的所有对象,并且将对象按顺序放到objs数组中

      (如果xib如右图所示,那么objs数组中依次会有3个对象:1个UIView、1个UIButton、1个UISwitch)

    1. 方法2

      bundle参数可以为nil,默认就是main bundle

      UINib *nib = [UINib nibWithNibName:@"MJAppView" bundle:[NSBundle mainBundle]];

      NSArray *objs = [nib instantiateWithOwner:nil options:nil];

    • 在开发阶段,面向开发者的是xib文件; 当把应用装到手机上时,xib文件就会转为nib文件

    随意调整view的尺寸

    • 要想随意调整xib中view的尺寸,首先要设置size为Freeform

    Xib和storyboard对比

    • 共同点:
    1. 都用来描述软件界面
    2. 都用Interface Builder工具来编辑
    • 不同点
    1. Xib是轻量级的,用来描述局部的UI界面
    2. Storyboard是重量级的,用来描述整个软件的多个界面,并且能展示多个界面之间的跳转关系

    view的封装

    • 如果一个view内部的子控件比较多,一般会考虑自定义一个view,把它内部子控件的创建屏蔽起来,不让外界关心
    • 外界可以传入对应的模型数据给view,view拿到模型数据后给内部的子控件设置对应的数据

    UILabel的常见设置

    • @property(nonatomic,copy) NSString *text;
    1. 显示的文字
    • @property(nonatomic,retain) UIFont *font;
    1. 字体
    • @property(nonatomic,retain) UIColor *textColor;
    1. 文字颜色

    • @property(nonatomic) NSTextAlignment textAlignment;
    1. 对齐模式(比如左对齐、居中对齐、右对齐)

    UIFont

    • UIFont代表字体,常见创建方法有以下几个:
    1. + (UIFont *)systemFontOfSize:(CGFloat)fontSize;系统默认字体
    2. + (UIFont *)boldSystemFontOfSize:(CGFloat)fontSize;粗体
    3. + (UIFont *)italicSystemFontOfSize:(CGFloat)fontSize; 斜体

    UIButton的常见设置

    • - (void)setTitle:(NSString *)title forState:(UIControlState)state;
    1. 设置按钮的文字
    • - (void)setTitleColor:(UIColor *)color forState:(UIControlState)state;
    1. 设置按钮的文字颜色
    • - (void)setImage:(UIImage *)image forState:(UIControlState)state;
    1. 设置按钮内部的小图片
    • - (void)setBackgroundImage:(UIImage *)image forState:(UIControlState)state;
    1. 设置按钮的背景图片 设置按钮的文字字体(需要拿到按钮内部的label来设置)
    • btn.titleLabel.font = [UIFont systemFontOfSize:13];

     

    • - (NSString *)titleForState:(UIControlState)state;
    1. 获得按钮的文字
    • - (UIColor *)titleColorForState:(UIControlState)state;
    1. 获得按钮的文字颜色
    • - (UIImage *)imageForState:(UIControlState)state;
    1. 获得按钮内部的小图片
    • - (UIImage *)backgroundImageForState:(UIControlState)state;
    1. 获得按钮的背景图片

            

  • 相关阅读:
    WP7 操作XML文件
    C#和C/C++指针实现swap交换
    感受
    我学到了什么 我思考了什么.
    hdu 2768 Cat vs. Dog (最大独立)
    hdu 1960 Taxi Cab Scheme (最小覆盖)
    hdu 1528 Card Game Cheater (最小覆盖)
    hdu 4160 Dolls (最大独立)
    hdu 2458 Kindergarten (最大独立集)
    hdu 2119 Matrix (最小覆盖)
  • 原文地址:https://www.cnblogs.com/YangFuShun/p/4326799.html
Copyright © 2020-2023  润新知