zoukankan      html  css  js  c++  java
  • 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.运行

  • 相关阅读:
    Nunit单元测试实践
    win2003下安装大程序的补丁
    内存内运行vs05
    vs03无法调试,需要加入debugger组的办法
    js原型类样例
    DOS下建立以日期文件夹备份的批处理
    转flex了,ria的应用看上去很适合企业级应用开发呢
    C#类中使用Session的正确方法
    C#修改connectionStrings的方法
    批量更改目录或者文件名称
  • 原文地址:https://www.cnblogs.com/yaoyu126/p/3757488.html
Copyright © 2011-2022 走看看