zoukankan      html  css  js  c++  java
  • 九宫格计算,创建应用例子,字典转模型

    #import "ViewController.h"
    #import "CZapp.h" //引用模型类
    
    @interface ViewController ()
    @property (nonatomic ,strong) NSArray* apps; //声明数组保存数据
    @end
    
    @implementation ViewController
     //懒加载
    -(NSArray *)apps 
    {
        if (_apps==nil) {
        // 获取plist路径
            NSString* path = [[NSBundle mainBundle] pathForResource:@"apps_plist" ofType:nil];
        //根据数组得到数据
            NSArray* arrayDict =[NSArray arrayWithContentsOfFile:path];
            //声明一个可变数组用于保存数据
            NSMutableArray * arrayModels =[NSMutableArray array];
            //循环字典给模型赋值
            for(NSDictionary * dict in arrayDict)
            {    
            // 调用Czapp字典转模型    
                CZapp *model =[CZapp appWith:dict];
             //模型赋值给可变数组
                [arrayModels addObject:model];
            }
           
        }
        return _apps;
    }
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        /*
         计算步骤:
            1.确定每个app的宽和高
            2.计算marginX,marginy,marginTop
            3.计算每个app所在的行索引,列索引
            4.根据当前app的行索引和列索引计算出appx和appy
         */
        //定义变量为3列
        int cloumns=3;
        //获取View的宽度
        CGFloat ViewWidth =self.view.frame.size.width;
        CGFloat appW =75;
        CGFloat appH =90;
        //第一行距离顶部的距离
        CGFloat marginTop =30;
        CGFloat marginX = (ViewWidth- cloumns*appW)/(cloumns+1);
        CGFloat marginY =marginX;//假设每行之间的间距和Marginx相等
        //循环创建uiview
        for (int i =0; i<12; i++)
        {
            //计算每个单元格所在列的索引
            int colidx =i % cloumns;
            //计算每个单元格所在行的索引
            int rowidx = i /cloumns;
            //创建UIView
            UIView *appsView = [[UIView alloc]init];
        //设置View背景色
            appsView.backgroundColor =[UIColor blueColor];    
            CGFloat appX =marginX + colidx *(appW +marginX);
            CGFloat appy =marginTop +rowidx *(appH +marginY);
            appsView.frame =CGRectMake(appX, appy, appW, appH);
           
            [self.view addSubview:appsView];
            
            //创建uiImageView
            UIImageView * imageIcon =[[UIImageView alloc]init];
            imageIcon.backgroundColor =[UIColor greenColor];
            
            CGFloat IconW =45;
            CGFloat IconH =45;
            CGFloat IconX =(appsView.frame.size.width -IconW)* 0.5;
            CGFloat IconY =0;
            imageIcon.frame = CGRectMake(IconX, IconY, IconW, IconH);
            [appsView addSubview:imageIcon];
            //创建lable
            UILabel  *lblName= [[UILabel alloc] init];
            lblName.backgroundColor = [UIColor yellowColor];
            CGFloat lblW = appsView.frame.size.width;
            CGFloat lblh = 20;
            CGFloat lblx =0;
            CGFloat lbly =IconH;
            lblName.frame =CGRectMake(lblx, lbly, lblW, lblh);
            [appsView addSubview:lblName];
            //创建 button
            UIButton * btnDown =[[UIButton alloc]init];
            btnDown.backgroundColor =[UIColor redColor];
            
            CGFloat btnW =IconW;
            CGFloat btnH =20;
            CGFloat btnX =IconX;
            //CGFloat btnY =lblY+lblh;
            CGFloat btnY = CGRectGetMaxY(lblName.frame);
            btnDown.frame =CGRectMake(btnX, btnY, btnW, btnH);
            [appsView addSubview:btnDown];
        }
    }
    
    @end
    #import <Foundation/Foundation.h>
    
    @interface CZapp : NSObject
    @property (nonatomic,copy)NSString * name;
    @property(nonatomic,copy) NSString* icon;//  声明属性
    -(instancetype)initwithApp: (NSDictionary*)dict;
    +(instancetype)appWith:(NSDictionary*)dict; @end // // CZapp.m // UIviewCode #import "CZapp.h" @implementation CZapp // instancetype的作用,就是使那些非关联返回类型的方法返回所在类的类型 -(instancetype)initwithApp: (NSDictionary*)dict { if (self == [super init]) { self.name=dict[@"name"]; self.icon=dict[@"icon"]; } return self; } +(instancetype)appWith:(NSDictionary*)dict{ return [[self alloc] initwithApp:dict]; } @end
  • 相关阅读:
    BWList of logged on users in the Portal
    BASIS About Profile
    B/S C/S 打印
    程序员得学习观各种好书推荐
    ORACLE面试测试题目
    oracle经典20题(参考答案)
    程序员得学习观各种好书推荐
    Oracle笔试题
    Oracle笔试题
    Oracle里面常用的数据字典有哪些?
  • 原文地址:https://www.cnblogs.com/zzgt/p/4831185.html
Copyright © 2011-2022 走看看