IOS中标签视图和Block
时间:2014-05-10 08:48:30
收藏:0
阅读:454
标签视图控制器 - 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到堆内存中.
评论(0)