iOS: 学习笔记实例, 用代码控制视图创建与切换

来源:互联网 发布:java连接mysql url 编辑:程序博客网 时间:2024/05/22 12:46

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;@endconst 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. 运行

0 0