//
// 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
转载于:https://www.cnblogs.com/0515offer/p/4617168.html
相关资源:C#MVC实现带参数的构造注入