TabBar中间按钮和Navigation常见配置
TabBar中间按钮方法一
[self setupTabBarChildrenWithTitle:@"精华" image:@"tabBar_essence_icon" selectImage:@"tabBar_essence_click_icon" viewController:[[UIViewController alloc] init]];
[self setupTabBarChildrenWithTitle:@"新帖" image:@"tabBar_new_icon" selectImage:@"tabBar_new_click_icon" viewController:[[UIViewController alloc] init]];
[self setupTabBarChildrenWithTitle:nil image:nil selectImage:nil viewController:[[UIViewController alloc] init]];
[self setupTabBarChildrenWithTitle:@"关注" image:@"tabBar_me_icon" selectImage:@"tabBar_me_click_icon" viewController:[[UIViewController alloc] init]];
[self setupTabBarChildrenWithTitle:@"我" image:@"tabBar_friendTrends_icon" selectImage:@"tabBar_friendTrends_click_icon" viewController:[[UIViewController alloc] init]];
- (UIButton *)centerButton
{
if (_centerButton == nil) {
_centerButton = [UIButton buttonWithType:UIButtonTypeCustom];
_centerButton.backgroundColor = XMGRandomColor;
[_centerButton addTarget:self action:@selector(centerButtonClick) forControlEvents:UIControlEventTouchUpInside];
[_centerButton setImage:[UIImage imageNamed:@"tabBar_publish_icon"] forState:UIControlStateNormal];
[_centerButton setImage:[UIImage imageNamed:@"tabBar_publish_click_icon"] forState:UIControlStateHighlighted];
_centerButton.frame = CGRectMake(0, 0, self.tabBar.frame.size.width / 5, self.tabBar.frame.size.height);
_centerButton.center = CGPointMake(self.tabBar.frame.size.width / 2, self.tabBar.frame.size.height / 2);
}
return _centerButton;
}
- (void)setupTabBarChildrenWithTitle:(NSString *)title image:(NSString *)image selectImage:(NSString *)selectImage viewController :(UIViewController *) vc
{
vc.tabBarItem.title = title;
vc.view.backgroundColor = XMGRandomColor;
if (image.length) {
vc.tabBarItem.image = [UIImage imageNamed:image];
vc.tabBarItem.selectedImage = [UIImage imageNamed:selectImage];
}
[self addChildViewController:vc];
}
方法二(自定义UItabBar)
- 因为UITabBarController 里面的 tabBar 属性是只读的,不能修改,所以我们使用KVC
@property(nonatomic,readonly) UITabBar *tabBar NS_AVAILABLE_IOS(3_0);
[self setValue:[[ZJCTabBar alloc] init] forKey:@"tabBar"];
- (void)layoutSubviews
{
[super layoutSubviews];
CGFloat buttonW = self.frame.size.width / 5;
CGFloat buttonH = self.frame.size.height;
CGFloat buttonY = 0;
int buttonIndex = 0;
for (UIView *subview in self.subviews) {
if (subview.class != NSClassFromString(@"UITabBarButton")) continue;
CGFloat buttonX = buttonIndex * buttonW;
if (buttonIndex >= 2) {
buttonX += buttonW;
}
subview.frame = CGRectMake(buttonX, buttonY, buttonW, buttonH);
buttonIndex++;
}
self.publishButton.frame = CGRectMake(0, 0, buttonW, buttonH);
self.publishButton.center = CGPointMake(self.frame.size.width * 0.5, self.frame.size.height * 0.5);
}
- (UIButton *)centerButton
{
if (_centerButton == nil) {
_centerButton = [UIButton buttonWithType:UIButtonTypeCustom];
_centerButton.backgroundColor = XMGRandomColor;
[_centerButton addTarget:self action:@selector(centerButtonClick) forControlEvents:UIControlEventTouchUpInside];
[_centerButton setImage:[UIImage imageNamed:@"tabBar_publish_icon"] forState:UIControlStateNormal];
[_centerButton setImage:[UIImage imageNamed:@"tabBar_publish_click_icon"] forState:UIControlStateHighlighted];
_centerButton.frame = CGRectMake(0, 0, self.tabBar.frame.size.width / 5, self.tabBar.frame.size.height);
_centerButton.center = CGPointMake(self.tabBar.frame.size.width / 2, self.tabBar.frame.size.height / 2);
}
return _centerButton;
}
