IOS中标签视图和Block

标签视图控制器 - UITabBarController

自定义UITabBarItem

自定义导航栏和标签栏背景图片

三个视图控制器的综合使用

一. 标签视图控制器  UITabBarController

UITabBarController有以下重要属性

viewControllers   显示的视图控制器

tabBar                  标签栏

delegate                协议

tabBar 是 UITabBar对象, 包含多个UITabBarItem, 每个tanBarItem对应一个viewController. tabBar高度为49

当tabBarItem超过五个时, 系统会自动增加一个更多按钮,点击更多按钮,没有在底部出现的那些按钮会以列表形式显示出来

UIAppearance

如果想通过一键设定所有导航视图控制器的颜色,类似于QQ的一键换肤操作, 可以通过UIAppearance协议来进行操作, 通过它可以对一些控件进行自定义颜色等

UITabBarController * tab = [[UITabBarController alloc] init];
    tab.delegate = self;
    [tab setHidesBottomBarWhenPushed:NO];

    NSArray * arr = [NSArray arrayWithObjects:nav,nav2,nav3,nav4,nav5,nav6, nil];
    [tab setViewControllers:arr];
    //整个一条的颜色
    [tab.tabBar setBarTintColor:[UIColor whiteColor]];
    //每个图标的颜色
    [tab.tabBar setTintColor:[UIColor orangeColor]];

总结

UITabBarController是项目开发中常见的布局样式,与UINavigationController不同,它的viewController都是并列的,而UINavigationController的则是层次性的

UITabBatController,UINavigationController和UITableViewController,通常都是组合出现,这种布局方式特别常见,一定要熟练应用

UITabBarController可以嵌套UINavigationController

UINavigationController也可以嵌套UITabBatController

IOS  Block用法

在IOS中,定义 用" ^ "来表明block变量, 内容是包含在" {}"中的,并且和C语言一样,用" ; "来表示语句的结束

int multiplier = 7;

int (^myBlock)(int) = ^(int num){return num * multiplier; };

"^"声明这是一个block, "myBlock"为变量名

block返回值类型为int类型

类型为int的参数

参数名为"num"

//无返回类型 无参数类型的block
-(void)testFirstBlock
{
    void (^myBlock)() = ^(){
        NSLog(@"我输了>3<");
    };
    NSLog(@"比比谁先走");
    myBlock();
}

-(void)testSecondBlock
{
    void (^twoBlock)(NSString *) = ^(NSString * str){
        NSLog(@"str == %@",str);
    };
    twoBlock(@"手拉手 一起走");
    twoBlock(@"猪点点");
}

//无返回值 多个参数
-(void)testThirdBlock
{
    void (^thirdBlock)(NSString *,int) = ^(NSString * str,int a){
        NSLog(@"int == %d,str == %@",a,str);
    };
    thirdBlock(@"(?????)",55555);
}

//有返回值 有参数
-(void)testForthBlock
{
    int (^forthBlock)(NSString *,NSInteger) = ^(NSString * value,NSInteger num){

        int strValue = [value intValue];

        return strValue+num;
    };

    int d = forthBlock(@"77",2);

    NSLog(@"(?????)a == %d",d);
}

//改变背景颜色
-(void)testColorBlock
{
    void (^myBlock)(UIColor *) = ^(UIColor * color){
        [self.view setBackgroundColor:color];
    };
    self.teseBlock = myBlock;
    NSLog(@"textBlock == %@",self.teseBlock);
}

Block注意事项

由于block所创建的变量分为两个内存区域,分别是全局区和栈区,因此在IOS中如果使用block的成员变量或者属性时,需要将其copy到堆内存中.

IOS中标签视图和Block

时间: 05-07

IOS中标签视图和Block的相关文章

浅谈iOS中的视图优化

引言: 让我们来思考几个问题,你开发过的产品,它还有可以优化的地方吗?能增加它的帧率吗?能减少多余的CPU计算吗?是不是存在多余的GPU渲染?业务这点工作量对于越来越强大的设备面前显得微不足道,但作为一个细心的开发者,我觉得很有必要来谈谈iOS中的视图优化. 本文从开发者最容易犯错的地方出发,结合例子,从以下几个角度阐述如何进行视图优化: Color Blended Layers Color Copied Images Color Misaligned Images Color Offscree

Swift - iOS中各种视图控制器(View Controller)的介绍

在iOS中,不同的视图控制器负责不同的功能,采用不同的风格向用户呈现信息.下面对各个视图控制器做个总结: 1,标准视图控制器 - View Controller 这个控制器只是用来呈现内容.通常会用来作为子类,以向屏幕中添加逻辑. 2,导航控制器 - Navigation Controller 这个控制器呈现一个视图控制器的栈,应用程序可以在上面推入更多的视图控制器. 当新视图推入栈,或旧视图弹出栈时,导航控制器会以动画的形式(比如卷动)显示隐藏这些视图. 使用样例:系统“设置”应用程序 3,表

ios中的视图调试(ios8苹果引入了强大的新技术,不可不看)

在ios8以前,我们想要进行ui实时调试,可以依赖的技术手段有: 用xcode启动app,然后点击xcode暂停运行按钮,然后在调试控制台输入下面语句: po [[UIWindow keyWindow] recursiveDescription] 然后就可以看到完整的UI结构和层级关系,类似如下: <UIWindow: 0x7b691cd0; frame = (0 0; 320 480); gestureRecognizers = <NSArray: 0x7b6921f0>; layer

iOS中多视图的传值 属性传值和代理传值

首先创建两个类 ,FirstViewController和SecondViewController,都继承于UIViewController 1 #import "AppDelegate.h" 2 #import "FirstViewController.h" 3 4 @interface AppDelegate () 5 6 @end 7 8 @implementation AppDelegate 9 10 11 - (BOOL)application:(UIAp

IOS中多视图应用设置首界面

XCODE版本:6.4 IOS版本:8.4 错误: View Switcher[4883:389088] Failed to instantiate the default view controller for UIMainStoryboardFile 'Main' - perhaps the designated entry point is not set? 因为书上使用的较旧的版本,xcode6之前的版本在创建项目时有"empty application"模板,但是6.4没有这

iOS中的视图跳转的三种方式(代码跳转,根据桥跳转,按钮跳转)

#import "ViewController.h" #import "SecondViewController.h" @interface ViewController () @property (retain, nonatomic) IBOutlet UITextField *textField; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // D

IOS中集合视图UICollectionView中DecorationView的简易使用方法

转载自:   http://www.it165.net/pro/html/201312/8575.html Decoration View是UICollectionView的装饰视图.苹果官方给的案例都没涉及到这个视图的使用.没有具体的细节.我今天用UICollectionView做了一个简易的书架.主要是Decoration View的使用方法. 效果如下: 基本的UICollectionView使用方法请自己查询. #import "CVViewController.h" #imp

iOS中的UITabBarController(标签视图控制器)

#import "AppDelegate.h" #import "FirstTableViewController.h" #import "SecondTableViewController.h" #import "ThirdTableViewController.h" #import "FourthTableViewController.h" #import "FiveTableViewCont

iOS开发中标签控制器的使用——UITabBarController

正文 iOS开发中标签控制器的使用——UITabBarController 一.引言 与导航控制器相类似,标签控制器也是用于管理视图控制器的一个UI控件,在其内部封装了一个标签栏,与导航不同的是,导航的管理方式是纵向的,采用push与pop切换控制器,标签的管理是横向的,通过标签的切换来改变控制器,一般我们习惯将tabBar作为应用程序的根视图控制器,在其中添加导航,导航中在对ViewController进行管理. 二.创建一个标签控制器 通过如下的步骤,我们可以很简便的创建一个TabBarCo