控制器 ------ tabbar控制器 和 导航控制器
2015-10-28 17:27
281 查看
1.自定义一个底部 tabbarController ,然后自定义一个tabbarbutton ,继承UITabBar, 在控制器中使用kvc模式拿到UITabBar;
alloc]initWithFrame:[UIScreen
mainScreen].bounds];
XBTabBarController *tab = [[XBTabBarController
alloc]init];
window.rootViewController = tab;
self.window = window;
[self.window
makeKeyAndVisible];
alloc]init];
//使用KVC模式设置tabbar
[self
setValue:tab forKeyPath:@"tabBar"];
[super
layoutSubviews];
//设置+号按钮的位置
//self.plusbtn.center = CGPointMake(self.width * 0.5, self.height * 0.5);
//设置其他tabbarbutton的位置
CGFloat tabbarbuttonW =self.frame.size.width /
4;
CGFloat tabbatbuttonIndex =
0;
for ( UIView *child
in self.subviews) {
Class class =
NSClassFromString(@"UITabBarButton");
if ([child isKindOfClass:class]) {
// 设置宽度
CGFloat witch = tabbarbuttonW;
// 设置x
CGFloat X = tabbatbuttonIndex * tabbarbuttonW;
child.frame =
CGRectMake(X, 0, witch,
self.frame.size.height);
// 增加索引
tabbatbuttonIndex++;
}
}
}
- (void)setUpController:(UIViewController*)vcClack title:(NSString*)title
imageName:(NSString*)imageName SelecdImage:(NSString*)SelecdImage{
vcClack.title = title;
vcClack.tabBarItem.image = [UIImage
imageNamed:imageName];
UIImage * meImage = [UIImage
imageNamed:SelecdImage];
vcClack.tabBarItem.selectedImage = [meImage
imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
XBNavigationController *nav = [[XBNavigationController
alloc]initWithRootViewController:vcClack];
[self
addChildViewController:nav];
}
1》启动控制器 tabbar
UIWindow *window = [[UIWindowalloc]initWithFrame:[UIScreen
mainScreen].bounds];
XBTabBarController *tab = [[XBTabBarController
alloc]init];
window.rootViewController = tab;
self.window = window;
[self.window
makeKeyAndVisible];
2》在tabbarController中 拿到tabbar
XBTabBar *tab = [[XBTabBaralloc]init];
//使用KVC模式设置tabbar
[self
setValue:tab forKeyPath:@"tabBar"];
3》tabbar中定义tabbar的按钮位置,注意要在- (void)layoutSubviews中进行位置处理。
- (void)layoutSubviews{[super
layoutSubviews];
//设置+号按钮的位置
//self.plusbtn.center = CGPointMake(self.width * 0.5, self.height * 0.5);
//设置其他tabbarbutton的位置
CGFloat tabbarbuttonW =self.frame.size.width /
4;
CGFloat tabbatbuttonIndex =
0;
for ( UIView *child
in self.subviews) {
Class class =
NSClassFromString(@"UITabBarButton");
if ([child isKindOfClass:class]) {
// 设置宽度
CGFloat witch = tabbarbuttonW;
// 设置x
CGFloat X = tabbatbuttonIndex * tabbarbuttonW;
child.frame =
CGRectMake(X, 0, witch,
self.frame.size.height);
// 增加索引
tabbatbuttonIndex++;
}
}
}
4》tabbar系统会自动进行渲染,要在进行创建的时候进行禁止渲染
// 设置vcTabBarItem- (void)setUpController:(UIViewController*)vcClack title:(NSString*)title
imageName:(NSString*)imageName SelecdImage:(NSString*)SelecdImage{
vcClack.title = title;
vcClack.tabBarItem.image = [UIImage
imageNamed:imageName];
UIImage * meImage = [UIImage
imageNamed:SelecdImage];
vcClack.tabBarItem.selectedImage = [meImage
imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
XBNavigationController *nav = [[XBNavigationController
alloc]initWithRootViewController:vcClack];
[self
addChildViewController:nav];
}
相关文章推荐
- jgroups API
- Android 获取手机联系人代码
- Eclipse项目导入到Android studio中
- 导航
- 好架构是进化来的,不是设计来的
- iOS开启个人热点的纵向适配
- Yii2使用Redis - 从安装redis到使用
- 安卓开发学习之010 TableLayout详解+计算器实现
- jgroups 例子
- Android笔记—Intent传递序列化HashMap对象
- 使用FastReport的UserDataSet时候,遇到TfrxMemoView内容过多而打印不全的问题
- 宏定义字符串连接和符号粘贴
- C#索引器一
- 关于RadioButton setCheck方法的问题
- 编码器工作原理,光电编码器的工作原理分析
- C# ArcEngine 实现点击要素高亮并弹出其属性
- Spring-Bean的生命周期
- Kali2.0在使用aircrack-ng破解无线密码时网卡监听模式问题
- CodeForces 261A Maxim and Discounts [想法/贪心题]
- Cannot reload AVD List : Value '280dpi' is not facet-valid with ......---Android studio调试错误