ios-利用xib重新写 应用管理

//
//  app.h
//  应用管理
//
//  Created by YaguangZhu on 15/7/31.
//  Copyright (c) 2015年 YaguangZhu. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface app : NSObject

@property (nonatomic,copy) NSString *miaoshu;
@property (nonatomic,copy) NSString *icon;

- (app *)initWithDict:(NSDictionary *)dict;
+ (app *)appwithDict:(NSDictionary *)dict;

@end
//
//  app.m
//  应用管理
//
//  Created by YaguangZhu on 15/7/31.
//  Copyright (c) 2015年 YaguangZhu. All rights reserved.
//

#import "app.h"

@implementation app

-(app *)initWithDict:(NSDictionary *)dict
{
    if (self = [super init]) {
        self.miaoshu = dict[@"miaoshu"];
        self.icon = dict[@"icon"];
    }
    return self;
}
+ (app *)appwithDict:(NSDictionary *)dict
{
    return [[self alloc] initWithDict:dict];
}
@end

 

//
//  CZAppView.h
//  应用管理
//
//  Created by YaguangZhu on 15/8/1.
//  Copyright (c) 2015年 YaguangZhu. All rights reserved.
//

#import <UIKit/UIKit.h>
@class app;
@interface CZAppView : UIView
@property (nonatomic,strong) app *model;

+ (instancetype)appView;

@end
//
//  CZAppView.m
//  应用管理
//
//  Created by YaguangZhu on 15/8/1.
//  Copyright (c) 2015年 YaguangZhu. All rights reserved.
//

#import "CZAppView.h"
#import "app.h"
@interface CZAppView ()

@property (weak, nonatomic) IBOutlet UIImageView *imgViewIcon;
@property (weak, nonatomic) IBOutlet UILabel *lblName;
@property (weak, nonatomic) IBOutlet UIButton *btnDownload;

@end
@implementation CZAppView

/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
    // Drawing code
}
*/
- (void)setModel:(app *)model
{
    _model = model;
    
    self.imgViewIcon.image = [UIImage imageNamed:model.icon];
    self.lblName.text = model.miaoshu;
}

+ (instancetype)appView


{


     NSBundle *rootBoundle = [NSBundle mainBundle];


    return  [[rootBoundle loadNibNamed:@"CZAppView" owner:nil options:nil ] lastObject];


}

@end
//
//  ViewController.m
//  应用管理
//
//  Created by YaguangZhu on 15/7/31.
//  Copyright (c) 2015年 YaguangZhu. All rights reserved.
//

#import "ViewController.h"
#import "app.h"
#import "CZAppView.h"

@interface ViewController ()

@property (nonatomic,strong) NSArray *apps;


@end

@implementation ViewController
- (NSArray *)apps
{
    if (_apps == nil) {
        NSString *path = [[NSBundle mainBundle] pathForResource:@"app.plist" ofType:nil];
        
        NSArray *array = [NSArray arrayWithContentsOfFile:path];
        
        NSMutableArray *arrayModels = [NSMutableArray array];
        
        for (NSDictionary *dict in array) {
            app *model = [app appwithDict:dict];
            
            
           // model.miaoshu = dict[@"miaoshu"];
           // model.icon = dict[@"icon"];
            
            [arrayModels addObject:model];
        }
        _apps =arrayModels;
        
    }
    
    return  _apps;
   
}


- (void)viewDidLoad {
    [super viewDidLoad];
    int colums =3;
    CGFloat viewWidth = self.view.frame.size.width;
    
    CGFloat appW = 75;
    CGFloat appH = 90;
    CGFloat marginTop = 30;
    CGFloat maginX = (viewWidth - colums*appW)/ (colums+1);
    CGFloat maginY = maginX;
    
     for (int i=0;i<self.apps.count;i++)//9 = self.apps.count
    {
        
        app *appModel = self.apps[i];
        
        //xib创建控件
      //  NSBundle *rootBoundle = [NSBundle mainBundle];
       // CZAppView *appview = [[rootBoundle loadNibNamed:@"CZAppView" owner:nil options:nil ] lastObject];
        //封装下

        CZAppView *appview = [CZAppView appView];

int colIdx = i % colums;
        int rowIdx = i / colums;
        CGFloat appX = maginX+ colIdx *(appW +maginX);
        CGFloat appY = marginTop +rowIdx *(appH +maginY);
        appview.frame = CGRectMake(appX, appY, appW, appH);
    
        [self.view addSubview:appview];
       // 用tag来给控件赋值
//        UIImageView *imgViewIcon =  (UIImageView *)[appview viewWithTag:1000];
//        imgViewIcon.image = [UIImage imageNamed:appModel.icon];
//        
//        UILabel *lblName = (UILabel*)[appview viewWithTag:2000];
//        lblName.text = appModel.miaoshu;
        //用自己创建一个类 然后拖拉控件来赋值
//        appview.imgViewIcon.image = [UIImage imageNamed:appModel.icon];
//        appview.lblName.text = appModel.miaoshu;
        
        //以上不这样写说为了安全 和封装性好
        appview.model = appModel;
    
    }
        
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

 

posted @ 2015-08-01 15:13  微博和csdn还有你  阅读(193)  评论(0编辑  收藏  举报