工厂模式:

 
.h文件:
 
#import <Foundation/Foundation.h>
typedef enum{
    QFRed,
    QFYellow,
    QFBlue
}QFViewColor;

@interface QFview : UIView
+(id)viewWithColor:(QFViewColor)QFViewColorType;
@end

.m文件:
+(id)viewWithColor:(QFViewColor)QFViewColorType{
    UIView *view = [[UIView alloc] init];
    switch (QFViewColorType) {
        case QFRed:
            view.backgroundColor=[UIColor redColor];
            break;
        case QFYellow:
            view.backgroundColor=[UIColor yellowColor];
            break;
        case QFBlue:
            view.backgroundColor=[UIColor blueColor];
            break;
        default:
            view.backgroundColor=[UIColor whiteColor];
            break;
    }
    return view;
}
 
 
利用工厂模式显示view视图
 
    UIView *rootView = [[UIView alloc] initWithFrame:CGRectMake(50, 50, 300, 300)];
    rootView.backgroundColor = [UIColor whiteColor];
    
    rootView.clipsToBounds = YES;
    //切割视图外部的东西
    
    UIView *redView = [QFview viewWithColor:QFRed];
    redView.frame = CGRectMake(0, 0, 200, 200);
    [rootView addSubview:redView];
    redView.alpha = 1;
    
    UIView *yellowView = [QFview viewWithColor:QFYellow];
    yellowView.frame = CGRectMake(50, 50, 150, 150);
    yellowView.alpha = 1;
    [rootView addSubview:yellowView];
    
    UIView *blueView = [QFview viewWithColor:QFBlue];
    blueView.frame = CGRectMake(100, 100, 100, 100);
    [rootView addSubview:blueView];
    
 
图片显示:
 
对视图进行层次化操作:
 
    //[rootView bringSubviewToFront:redView];
    //[rootView sendSubviewToBack:blueView];
    
    NSArray *rootViewSubviews = rootView.subviews;
    int yellowIndex = [rootViewSubviews indexOfObject:yellowView];
    int redIndex = [rootViewSubviews indexOfObject:redView];
    
    //[rootView exchangeSubviewAtIndex:yellowIndex withSubviewAtIndex:redIndex];
    /* 将红色 黄色调换 */
    
    UIView *greenView = [[UIView alloc] initWithFrame:CGRectMake(150, 150, 50, 50)];
    greenView.backgroundColor = [UIColor greenColor];
    [rootView insertSubview:greenView aboveSubview:blueView];
    
    [self.window addSubview:rootView];
 
 
设置视图内的按键不可用
 
 
    UIButton *button = [UIButton buttonWithType:UIButtonTypeContactAdd];
    button.frame = CGRectMake(50, 50, 50, 50);
    button.enabled = NO; //设置按键不可用
    [rootView addSubview:button];

    rootView.userInteractionEnabled = NO;
    //设置按键无法按下
    

 
制作动画:
 
 
代码如下:
 
    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 40, 300, 200)];
    imageView.backgroundColor = [UIColor redColor];
    //imageView.contentMode = UIViewContentModeScaleToFill;
    imageView.contentMode = UIViewContentModeScaleAspectFill;
    imageView.animationDuration = 1.5;
    //速度多少秒
    NSMutableArray *images = [NSMutableArray array];
    for (int i=1; i<=13; ++i) {
        [images addObject:[UIImage imageNamed:[NSString stringWithFormat:@"png%d", i]]];
    
    }
    imageView.animationImages = images;
    //imageView.animationRepeatCount = 2;
    //图片重复多少次
    [imageView startAnimating];
    [self.window addSubview:imageView];
 
 
按钮可以换界面了、做四个界面每,按不同按钮切换不同界面:
 
 
 
代码:
 
 
#import "Xib.h"

@interface Xib ()
@property (weak, nonatomic) IBOutlet UIButton *button1;
@property (weak, nonatomic) IBOutlet UIButton *button2;
@property (weak, nonatomic) IBOutlet UIButton *button3;
@property (weak, nonatomic) IBOutlet UIButton *button4;
@property (weak, nonatomic) IBOutlet UIView *menuView;
-(void)showRedView;
-(void)showYellowView;
-(void)showBlueView;
-(void)showGreenView;
@end

@implementation Xib
{
    UIView *redView;
    UIView *yellowView;
    UIView *blueView;
    UIView *greenView;
}

- (IBAction)selected_one:(id)sender {
    _button1.selected = NO;
    _button2.selected = NO;
    _button3.selected = NO;
    _button4.selected = NO;

    UIButton *btn = sender;
    NSLog(@"点击:%d",btn.tag);

    btn.selected = YES;
    switch (btn.tag) {
        case 0:
            [self showRedView];
            break;
        case 1:
            [self showYellowView];
            break;
        case 2:
            [self showBlueView];
            break;
        case 3:
            [self showGreenView];
            break;
    }
}

-(void)showRedView{
    if (redView == nil) {
        redView = [[UIView alloc] initWithFrame:self.view.frame];
        redView.backgroundColor = [UIColor redColor];
        UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(100, 100, 200, 50)];
        label.text = @"The first page";
        [redView addSubview:label];
        [self.view addSubview:redView];
    }
    [self.view bringSubviewToFront:redView];
    [self.view bringSubviewToFront:self.menuView];
}

-(void)showYellowView
{
    if (yellowView == nil) {
        yellowView = [[UIView alloc] initWithFrame:self.view.frame];
        yellowView.backgroundColor = [UIColor yellowColor];
        UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(100, 100, 200, 50)];
        label.text = @"The second page";
        [yellowView addSubview:label];
        [self.view addSubview:yellowView];
    }
    [self.view bringSubviewToFront:yellowView];
    [self.view bringSubviewToFront:self.menuView];
}
-(void)showBlueView
{
    if (blueView == nil) {
        blueView = [[UIView alloc] initWithFrame:self.view.frame];
        blueView.backgroundColor = [UIColor blueColor];
        UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(100, 100, 200, 50)];
        label.text = @"The third page";
        [blueView addSubview:label];
        [self.view addSubview:blueView];
    }
    [self.view bringSubviewToFront:blueView];
    [self.view bringSubviewToFront:self.menuView];
}
-(void)showGreenView
{
    if (greenView == nil) {
        greenView = [[UIView alloc] initWithFrame:self.view.frame];
        greenView.backgroundColor = [UIColor greenColor];
        UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(100, 100, 200, 50)];
        label.text = @"The forth page";
        [greenView addSubview:label];
        [self.view addSubview:greenView];
    }
    [self.view bringSubviewToFront:greenView];
    [self.view bringSubviewToFront:self.menuView];
}

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.menuView.backgroundColor=[UIColor clearColor];
    // Do any additional setup after loading the view from its nib.
}

IOS UI 第三篇:基本UI的更多相关文章

  1. IOS设计模式第三篇之外观设计模式

    外观设计模式: 这个外观设计模式提供了一个单独的接口给复杂的子系统.而不是暴露用户的一组类和API,你仅仅暴露一个简单的同一的API. 下面的图片解释这个概念: API的用户根本不知道后面系统的复杂性 ...

  2. iOS开发UI篇—iOS开发中三种简单的动画设置

    iOS开发UI篇—iOS开发中三种简单的动画设置 [在ios开发中,动画是廉价的] 一.首尾式动画 代码示例: // beginAnimations表示此后的代码要“参与到”动画中 [UIView b ...

  3. IOS UI 第八篇:基本UI

    实现图片的滚动,并且自动停止在每张图片上     - (void)viewDidLoad{    [super viewDidLoad]; UIScrollView *scrollView = [[U ...

  4. iOS进阶指南试读之UI篇

    iOS进阶指南试读之UI篇 UI篇 UI是一个iOS开发工程师的基本功.怎么说?UI本质上就是你调用苹果提供给你的API来完成设计师的设计.所以,想提升UI的功力也很简单,没事就看看UIKit里的各个 ...

  5. 四核驱动的三维导航—淘宝新UI(设计篇)

    前面有一篇博客说到了淘宝UWP的"四核驱动的三维导航—淘宝新UI(需求分析篇)",花了两周的时间实现了这个框架,然后又陆陆续续用了三周的时间完善它. 多窗口导航,与传统的导航方式的 ...

  6. firefox 扩展开发笔记(三):高级ui交互编程

    firefox 扩展开发笔记(三):高级ui交互编程 前言 前两篇链接 1:firefox 扩展开发笔记(一):jpm 使用实践以及调试 2:firefox 扩展开发笔记(二):进阶开发之移动设备模拟 ...

  7. 游戏模块分析总结(2)之UI、操作篇

    转自:http://www.gameres.com/309812.html 游戏模块分析总结(2)之UI.操作篇 发布者: wuye | 发布时间: 2014-12-12 15:03| 评论数: 0 ...

  8. 环信 之 iOS 客户端集成四:集成UI

    在Podfile文件里加入 pod 'EaseUI', :git => 'https://github.com/easemob/easeui-ios-cocoapods.git' 然后在终端中的 ...

  9. vue mandmobile ui实现三列列表的方法

    vue mandmobile ui实现三列列表的方法 请问这种列表的要用那个组件好呢?Cellitem 只能用到两列,这个要三列的怎么弄?mand的好像没有listview,grid组件的 问了man ...

随机推荐

  1. EXCEL Pivot table manipulate

    Add filter For the Demo time,I would like to filter out the products which not in Red and Black colo ...

  2. Matlab.NET混合编程技巧之——找出Matlab内置函数

    原文:[原创]Matlab.NET混合编程技巧之--找出Matlab内置函数 Matlab与.NET的混合编程,掌握了基本过程,加上一定的开发经验和算法基础,肯定不难.反之,有时候一个小错误,可能抓破 ...

  3. thinkphp 删除该表的最后一行

    问题叙述性说明: 文章连接动态连接表格,因为有被添加.有必须删除.动态添加到表格这似乎有点不合理.它应该只被添加到表格行.而不是增加一个新表格. 发布完整的代码在这里,加入表格新行和删除表格最后一行. ...

  4. 如何定义自己的ViewGroup

    在发展中,有时会遇到一些要求.布局和控制系统不仅提供使用,以满足我们的发展,所以这一次就行,通常是你自己的自定义布局(ViewGroup)并控制(View)该.我在这里,我们将用一个简单的例子,当他们 ...

  5. 查询oracle sql运行计划,一个非常重要的观点--dba_hist_sql_plan

    该文章的作者给予了极大的帮助长老枯荣,为了表达我的谢意. 这适用于oracle db版本号oracle 10g或者更高的版本号. 之所以说这种看法是非常重要的,因为观点是有之一awrsqrpt报告没有 ...

  6. 第9章 组合模式(Composite Pattern)

    原文 第9章 组合模式(Composite Pattern) 概述: 组合模式有时候又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理 ...

  7. do...while(0)神奇

    1. do...while(0)消除goto语句. 通常,假设在一个函数中開始要分配一些资源.然后在中途运行过程中假设遇到错误则退出函数,当然,退出前先释放资源,我们的代码可能是这样: version ...

  8. sql server 汉字的长度

    前几天改了人家程序中的一个小bug,就是输入时长度的校验问题.项目是.Net的,数据库是 sql server的.检查了一下,发现以前的人员把长度给控制小了,数据库中允许输入256的长度,而别人在as ...

  9. Notification(一个)——使用演示样本的基础知识

    main.xml如下面: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" ...

  10. 加快XCode编译链接速度(200%+)—XCode编译慢液

    最近在一个大型项目的开发的时候遇到一个很头疼的问题,由于该项目的代码更,每次建立联系1纪要.浪费时间调试.因此,一些研究如何提高编译链接速度,这里给大家分享. 为了提高编译和链接的是以下三种方式的速度 ...