iOS: 学习笔记实例, 用代码控制视图创建与切换
1. 创建iOS, Single View Application.
2. 修改YYViewController.m
// // YYViewController.m // DynamicViewDemo // // Created by yao_yu on 14-5-28. // Copyright (c) 2014年 yao_yu. All rights reserved. // #import "YYViewController.h" @interface YYViewController () @property(nonatomic, strong) UIView *body; @property (nonatomic, strong) UIView *currentPage; @end const CGFloat HEIGHTEDGE = 40; @implementation YYViewController -(void)createBodyView { CGRect statusBarFrame = [[UIApplication sharedApplication] statusBarFrame]; CGRect parentFrame = self.view.frame; CGRect bodyFrame = CGRectMake(parentFrame.origin.x, parentFrame.origin.y + statusBarFrame.size.height + HEIGHTEDGE, parentFrame.size.width, parentFrame.size.height - statusBarFrame.size.height - HEIGHTEDGE); self.body = [[UIView alloc] initWithFrame:bodyFrame]; [self.body setBackgroundColor:[UIColor blackColor]]; [self.view addSubview:self.body]; } -(void)createCommands { CGRect statusBarFrame = [[UIApplication sharedApplication] statusBarFrame]; CGRect parentFrame = self.view.frame; CGRect bodyFrame = CGRectMake(parentFrame.origin.x, parentFrame.origin.y + statusBarFrame.size.height, parentFrame.size.width, HEIGHTEDGE); UIView *view = [[UIView alloc] initWithFrame:bodyFrame]; [view setBackgroundColor:[UIColor redColor]]; [self.view addSubview:view]; //添加命令按钮 const CGFloat COMMANDWIDTH = 50; const CGFloat COMMANDHEIGHT = 30; CGFloat midx = bodyFrame.size.width/2; CGFloat midy = bodyFrame.size.height/2; CGRect rect = CGRectMake(midx - COMMANDWIDTH/2, midy - COMMANDHEIGHT/2, COMMANDWIDTH, COMMANDHEIGHT); UIButton *btnPage1 = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [btnPage1 setBackgroundColor:[UIColor clearColor]]; [btnPage1 setTitle:@"第1页" forState:UIControlStateNormal]; rect.origin.x -= COMMANDWIDTH + 20; btnPage1.frame = rect; [btnPage1 addTarget:self action:@selector(onShowPage1:) forControlEvents:UIControlEventTouchUpInside]; [view addSubview:btnPage1]; btnPage1 = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [btnPage1 setTitle:@"第2页" forState:UIControlStateNormal]; rect.origin.x += COMMANDWIDTH + 20; btnPage1.frame = rect; [btnPage1 addTarget:self action:@selector(onShowPage2:) forControlEvents:UIControlEventTouchUpInside]; [view addSubview:btnPage1]; btnPage1 = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [btnPage1 setTitle:@"第3页" forState:UIControlStateNormal]; rect.origin.x += COMMANDWIDTH + 20; btnPage1.frame = rect; [btnPage1 addTarget:self action:@selector(onShowPage3:) forControlEvents:UIControlEventTouchUpInside]; [view addSubview:btnPage1]; } -(void) onShowPage1:(id)sender { [self clearCurrentPage]; CGRect frame = CGRectMake(0, 0, self.body.frame.size.width, self.body.frame.size.height); self.currentPage = [[UIView alloc] initWithFrame: frame]; [self.currentPage setBackgroundColor:[UIColor blueColor]]; [self.body addSubview:self.currentPage]; } -(void) onShowPage2:(id)sender { [self clearCurrentPage]; CGRect frame = CGRectMake(0, 0, self.body.frame.size.width, self.body.frame.size.height); self.currentPage = [[UIView alloc] initWithFrame: frame]; [self.currentPage setBackgroundColor:[UIColor yellowColor]]; [self.body addSubview:self.currentPage]; } -(void) onShowPage3:(id)sender { [self clearCurrentPage]; CGRect frame = CGRectMake(0, 0, self.body.frame.size.width, self.body.frame.size.height); self.currentPage = [[UIView alloc] initWithFrame: frame]; [self.currentPage setBackgroundColor:[UIColor greenColor]]; [self.body addSubview:self.currentPage]; } -(void) clearCurrentPage { if (self.currentPage) [self.currentPage removeFromSuperview]; self.currentPage = nil; } - (void)viewDidLoad { [super viewDidLoad]; self.currentPage = nil; [self createBodyView]; [self createCommands]; // Do any additional setup after loading the view, typically from a nib. } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end
3.运行