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,,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。