博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自定义UITabbarController控制器
阅读量:4566 次
发布时间:2019-06-08

本文共 3865 字,大约阅读时间需要 12 分钟。

自定义UITabbarController控制器

 

这是定制UITabbarController的基本原理,没有进行功能性封装.

 

效果:

 

 

源码地址:

 

源码:

////  ViewController.m//  TabbarController////  Created by XianMingYou on 15/4/15.//  Copyright (c) 2015年 XianMingYou. All rights reserved.//#import "ViewController.h"#import "FirstViewController.h"#import "SecondViewController.h"#import "UIButton+DemoUse.h"typedef enum : NSUInteger {    FIRST = 0x12,    SECOND,    BACK_VIEW,} EButtonFlag;@interface ViewController ()@property (nonatomic, strong) FirstViewController  *first;@property (nonatomic, strong) SecondViewController *second;@property (nonatomic, strong) UIViewController     *current;@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];        self.view.backgroundColor = [UIColor whiteColor];        // 初始化第一个控制器    self.first   = [FirstViewController new];    [self addChildViewController:self.first];        // 初始化第二个控制器    self.second = [SecondViewController new];    [self addChildViewController:self.second];        // 加载第一个控制器的视图    [self.first didMoveToParentViewController:self];    [self.view addSubview:self.first.view];        // 简易存储当前控制器    self.current = self.first;        // 创建出按钮    [self createButtons];}- (void)createButtons {    UIView *backView = [[UIView alloc] initWithFrame:CGRectMake(0, 200, 320, 80)];    backView.tag     = BACK_VIEW;    [self.view addSubview:backView];        // 控制器1按钮    [UIButton createButtonWithFrame:CGRectMake(10, 0, 145, 80)                            withTag:FIRST                          withTitle:@"First"                           withFont:nil                          addTarget:self                             action:@selector(buttonEvent:)                         haveBorder:YES                       insertInView:backView];        // 控制器2按钮    [UIButton createButtonWithFrame:CGRectMake(10 + 155, 0, 145, 80)                            withTag:SECOND                          withTitle:@"Second"                           withFont:nil                          addTarget:self                             action:@selector(buttonEvent:)                         haveBorder:YES                       insertInView:backView];}- (void)buttonEvent:(UIButton *)button {        if (button.tag == FIRST) {                // 此句话必加(否则点击两次的话会报错)        if ([self.current isEqual:self.first]) {            return;        }                // 控制器转场        [self transitionFromViewController:self.current                          toViewController:self.first                                  duration:0                                   options:UIViewAnimationOptionTransitionNone                                animations:^{                                }  completion:^(BOOL finished) {                                    self.current = self.first;                                                                        // 将按钮设置到最前面                                    [self.view bringSubviewToFront:[self.view viewWithTag:BACK_VIEW]];                                }];            } else if (button.tag == SECOND) {                // 此句话必加(否则点击两次的话会报错)        if ([self.current isEqual:self.second]) {            return;        }                // 控制器转场        [self transitionFromViewController:self.current                          toViewController:self.second                                  duration:0                                   options:UIViewAnimationOptionTransitionNone                                animations:^{                                }  completion:^(BOOL finished) {                                    self.current = self.second;                                                                        // 将按钮设置到最前面                                    [self.view bringSubviewToFront:[self.view viewWithTag:BACK_VIEW]];                                }];            }    }@end

 

转载于:https://www.cnblogs.com/YouXianMing/p/4429329.html

你可能感兴趣的文章
java web 项目 图书管理系统的设计与实现
查看>>
BZOJ 3339: Rmq Problem
查看>>
WIN7x64+VS2010+OpenCV2.4.10+cmake3.5.0重新编译OpenCV
查看>>
django forms的常用命令及方法(二)
查看>>
java位移运算符|And&,操作二进制
查看>>
字符串的模式匹配中的算法
查看>>
MySQL的学习记录
查看>>
Java语法基础练习2
查看>>
WindowManagerImpl和PhoneWindowManger的区别
查看>>
CSS样式
查看>>
解决sublime text无法安装插件问题
查看>>
Servlet笔记5--设置欢迎页面及HTTP状态码404、500
查看>>
URAL 2080 Wallet
查看>>
Android编程知识点1-Button,ListView
查看>>
Git 笔记二-Git安装与初始配置
查看>>
一步一步使用ABP框架搭建正式项目系列教程之本地化详解
查看>>
python之路_模块与包介绍
查看>>
洛谷P3905 道路重建
查看>>
Pytorch中的squeeze()和unsqueeze()函数
查看>>
Docker概念学习系列之Docker的主要目标(2)
查看>>