• MVC 构造


    //
    //  View.h
    //  UI5_HomeWork
    //
    //  Created by zhangxueming on 15/7/2.
    //  Copyright (c) 2015年 zhangxueming. All rights reserved.
    //
    
    #import <UIKit/UIKit.h>
    #import "DataModel.h"
    
    @interface View : UIView
    //构造视图
    - (id)initWithFrame:(CGRect)frame addTarget:(id)target action:(SEL)action;
    
    - (void)updateViewByModel:(DataModel *)model;
    
    
    @end
    
    
    
    //
    //  View.m
    //  UI5_HomeWork
    //
    //  Created by zhangxueming on 15/7/2.
    //  Copyright (c) 2015年 zhangxueming. All rights reserved.
    //
    
    #import "View.h"
    
    @implementation View
    
    - (id)initWithFrame:(CGRect)frame addTarget:(id)target action:(SEL)action
    {
        self = [super initWithFrame:frame];
        if (self) {
            CGRect frame1=CGRectMake(frame.origin.x, frame.origin.y, frame.size.width-10, frame.size.height-50);
            //CGRect frame1=CGRectMake(frame.origin.x, frame.origin.y, frame.size.width-10, frame.size.height+10);
            UIView *bgView = [[UIView alloc] initWithFrame:frame1];
            bgView.backgroundColor = [UIColor yellowColor];
            CGFloat size = (frame.size.height-80)/12;
            for (int i=0; i<12; i++) {
                UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, size*i,50,size-10)];
                label.text = [NSString stringWithFormat:@"%d",i+1];
                label.backgroundColor = [UIColor grayColor];
                label.alpha = 0.8;
                label.textAlignment = NSTextAlignmentCenter;
                label.textColor = [UIColor redColor];
                [bgView addSubview:label];
                
                UIView *view = [[UIView alloc] initWithFrame:CGRectMake(50, size*i, 200, size-10)];
                view.tag = 200+i;
                view.backgroundColor = [UIColor blueColor];
                [bgView addSubview:view];
            }
            
            UIButton *btn = [UIButton buttonWithType:UIButtonTypeSystem];
            btn.frame = CGRectMake(100,frame.size.height-60,frame.size.width-200, 50);
            btn.backgroundColor = [UIColor purpleColor];
            [btn setTitle:@"NEXT" forState:UIControlStateNormal];
            
            [btn addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];
            
            [bgView addSubview:btn];
            bgView.tag = 100;
            self.backgroundColor=[UIColor blackColor];
            [self addSubview:bgView];
        }
        return self;
    }
    
    //根据数据模型修改视图宽度
    - (void)updateViewByModel:(DataModel *)model
    {
        UIView *bgView =(UIView *)[self viewWithTag:100];
        //NSLog(@"bgView = %@", bgView);
        for (int i=0; i<12; i++) {
            UIView *view = [bgView viewWithTag:200+i];
            CGRect frame = view.frame;
            frame.size.width = [model dataFromModelByIndex:i];
            view.frame = frame;
        }
    }
    
    @end
    //
    //  DataModel.h
    //  UI5_HomeWork
    //
    //  Created by zhangxueming on 15/7/2.
    //  Copyright (c) 2015年 zhangxueming. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    
    @interface DataModel : NSObject
    {
        NSMutableArray *_dataArray;
    }
    
    - (id)init;
    - (void)updateModel;
    - (int)dataFromModelByIndex:(int)index;
    
    @end
    
    
    
    
    //
    //  DataModel.m
    //  UI5_HomeWork
    //
    //  Created by zhangxueming on 15/7/2.
    //  Copyright (c) 2015年 zhangxueming. All rights reserved.
    //
    
    #import "DataModel.h"
    
    @implementation DataModel
    
    - (id)init
    {
        self = [super init];
        if (self) {
            _dataArray = [[NSMutableArray alloc] init];
            for (int i=0; i<12; i++) {
                [_dataArray addObject:[NSNumber numberWithInt:0]];
            }
        }
        return self;
    }
    
    //更新数据模型
    - (void)updateModel
    {
        for (int i=0; i<12; i++) {
            NSNumber *num = [NSNumber numberWithInt:arc4random()%300];
            [_dataArray replaceObjectAtIndex:i withObject:num];
        }
        NSLog(@"_dataArray = %@", _dataArray);
    }
    
    //获取指定位置视图的宽度
    
    - (int)dataFromModelByIndex:(int)index
    {
        return [[_dataArray objectAtIndex:index] intValue];
    }
    
    
    @end
    //
    //  ViewController.m
    //  UI5_HomeWork
    //
    //  Created by zhangxueming on 15/7/2.
    //  Copyright (c) 2015年 zhangxueming. All rights reserved.
    //
    
    #import "ViewController.h"
    #import "View.h"
    #import "DataModel.h"
    
    @interface ViewController ()
    {
        DataModel *_model;
        View *_view;
    }
    @end
    
    //MVC 设计模式
    //Model(数据模型)  提供View显示的数据
    //View (视图对象)  在View上显示模型数据
    //Controller (控制对象)
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
        [self creatModel];
        [self creatUI];
        [self btnRefreshView];
    }
    
    
    - (void)creatModel
    {
        _model = [[DataModel alloc] init];
    }
    
    - (void)creatUI
    {
        _view = [[View alloc] initWithFrame:CGRectMake(10, 40, self.view.frame.size.width, self.view.frame.size.height-100) addTarget:self action:@selector(btnRefreshView)];
       // _view.backgroundColor=[UIColor blueColor];
        [self.view addSubview:_view];
        self.view.backgroundColor=[UIColor redColor];
    }
    
    //刷新视图
    - (void)btnRefreshView
    {
        [_model updateModel];
        [_view updateViewByModel:_model];
    }
    
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    @end
  • 相关阅读:
    2017.2.27学习笔记-----开发板,PC,虚拟机三者ping通
    2017.2.25学习笔记
    vue基础之计算属性和侦听器
    vue基础之组件通信
    vue基础之组件创建
    vue基础之监听器
    vue基础之生命周期
    vue基础之条件渲染
    vue基础之插槽
    vue总结
  • 原文地址:https://www.cnblogs.com/0515offer/p/4617168.html
Copyright © 2020-2023  润新知