自定义Tabbar #iOS

我们在做项目的过程中,会经常需要自定义tabbar。我今天刚好整理了一下,把自己的想法写出来和大家分享一下。自定义Tabbar 首先我们新建一个继承于UITabBar的子类EzTabBar 

EzTabBar.h文件内容

import “EzTabBar.h”

#define TABBAR_INSET 12

@implementation EzTabBar

-(void)initialize {
UIImageView * barv = [[UIImageView alloc]init];
self.barImage = barv;
self.barImage.frame = CGRectMake(TABBAR_INSET, 0, SCREENWIDTH / 4.0f - (2 * TABBAR_INSET), 3);

self.barImage.backgroundColor = COLOR(210,0,12,1);
[self addSubview:self.barImage];
}

-(id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self) {
[self initialize];
}
return self;
}

-(id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
[self initialize];
}
return self;
}

-(CGSize)sizeThatFits:(CGSize)size
{
CGSize sizeThatFits = [super sizeThatFits:size];
sizeThatFits.height = 44;

return sizeThatFits;
}

-(void)layoutSubviews {
[super layoutSubviews];
[self bringSubviewToFront:self.barImage];
}

-(void)setSelectedItem:(UITabBarItem *)selectedItem {
[super setSelectedItem:selectedItem];
NSInteger indexOfSelectedItem = [[self items] indexOfObject:selectedItem];
[UIView animateWithDuration:.3 delay:.0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
self.barImage.frame = CGRectMake(TABBAR_INSET + indexOfSelectedItem*(SCREENWIDTH / 4.0f), 0, self.barImage.frame.size.width, 3);
} completion:^(BOOL finished){
}];
}

@end

自定义TabbarViewController

import “EzTabBarController.h”

@interface EzTabBarController ()

@end

@implementation EzTabBarController

(id)initWithNibName:(NSString )nibNameOrNil bundle:(NSBundle )nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}

(void)viewDidLoad
{
[super viewDidLoad];

UITabBar *tabBar = self.tabBar;
UITabBarItem *tabBarItem1 = [tabBar.items objectAtIndex:0];
UITabBarItem *tabBarItem2 = [tabBar.items objectAtIndex:1];
UITabBarItem *tabBarItem3 = [tabBar.items objectAtIndex:2];
UITabBarItem *tabBarItem4 = [tabBar.items objectAtIndex:3];

tabBarItem1.image = [[UIImage imageNamed:@”TabBarIconHome”] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
tabBarItem1.selectedImage = [[UIImage imageNamed:@”TabBarIconHomeSelected”] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

tabBarItem2.image = [[UIImage imageNamed:@”TabBarIconWardrobe”] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
tabBarItem2.selectedImage = [[UIImage imageNamed:@”TabBarIconWardrobeSelected”] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

tabBarItem3.image = [[UIImage imageNamed:@”TabBarIconMyShop”] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
tabBarItem3.selectedImage = [[UIImage imageNamed:@”TabBarIconMyShopSelected”] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

tabBarItem4.image = [[UIImage imageNamed:@”TabBarIconPersonal”] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
tabBarItem4.selectedImage = [[UIImage imageNamed:@”TabBarIconPersonalSelected”] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

self.view.backgroundColor = [UIColor whiteColor];

}

-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
}

#pragma mark - Segues

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
[super prepareForSegue:segue sender:sender];
if ([segue.identifier isEqualToString:@”SwitchToMyShopSegue”]) {
[segue.destinationViewController setUserId:@”0”];
} else if ([segue.identifier isEqualToString:@”BaseOptionsSegue”]) {
((BaseOptionsForCreationViewController*)segue.destinationViewController).isFromFloatingButton = YES;
}
}

@end

  

时间: 2024-10-05 04:56:33

自定义Tabbar #iOS的相关文章

仿制新浪微博iOS客户端之三-自定义TabBar

继续上一篇文章的进度,我们实际完成了微博基本框架的搭建,具体实现的效果如下左图,但我们实际需要实现的效果为右图,除去主要的页面内容不谈,仅仅下面的TabBar距离我们的需求就有相当的差距.因此本文着重于实现需要的效果.                           再简要汇总一下我们的需求: 1.我们要在TabBar原有四个按钮的基础上,再增加一个按钮,作为撰写微博的入口: 2.新加入的按钮必须和原有按钮一起,均匀分布在TabBar上: 3.新加入的按钮只有图片,没有文字. 需求汇总如上,

iOS自定义tabbar后popToRootViewContriller和poptoviewcontroller时出现两个tabbar 的解决办法

iOS自定义tabbar后popToRootViewContriller和poptoviewcontroller时出现两个tabbar  的解决办法 问题:iOS自定义tabbar后popToRootViewContriller和poptoviewcontroller时出现两个tabbar 1.自定义代码: - (void)viewWillAppear:(BOOL)animated { [super  viewWillAppear:animated]; // 删除系统自动生成的UITabBarB

Android UI之自定义——类似iOS的Tabbar

Android UI之自定义--类似iOS的Tabbar Tabbar最早出现在iOS,iOS中的TabBarController实现了这个功能,开发起来相当简单.现在的APP,大多数都会使用Tabbar来作为应用的功能导航,界面简单清晰.那么Android常见的实现是通过RadioGroup来实现,今天将带来自定义实现,补充RadioGroup实现的不足. 先看看常见的软件中的使用: 这个是高铁管家APP,大家应该非常熟悉.这个APP的首页底部就是一个类似iOS的Tabbar.这里就不多举例子

ios中解决自定义tabbar跳转隐藏问题的方法

在ios开发(http://www.maiziedu.com/course/ios/)中,如何自定义tabbar高度的跳转隐藏问题,比如和系统自带的tabbar高度不一样导致的有一条线的问题,还有push时动画效果等等一些列问题不在这里累述了,当然,思路有很多,可以参考以上链接自己琢磨琢磨,好了,下面直接上个人认为完美解决办法. 需求 1.自定义tabbar,不用系统的tabbar 2.第二点需求是自定义tabbar的高度和系统的不一样,系统的tabbar高度为49,就是因为这点导致第三个需求有

IOS开发-关于自定义TabBar条

今天在做项目的时候,突然有一个模块需要自定义TabBar条. 在平常很多做项目的时候,都没有去自定义过,大部分都是使用系统自带的.今天整理一个自定义TabBar条的步骤. 首先看下我们最终实现的效果: 首先需要继承UItabBar自定义一个自己的tabBar .h #import <UIKit/UIKit.h> @class THTabBar; @protocol THTabBarDelegate <UITabBarDelegate> @optional - (void)tabBa

iOS开发之功能模块--关于自定义TabBar条

只上项目中用到的代码: 1.实现重写TabBar的TabBarItem,然后在中间额外加一个按钮. 1 #import <UIKit/UIKit.h> 2 3 @interface BikeTabBar : UITabBar 4 5 @end 1 #import "BikeTabBar.h" 2 3 @interface BikeTabBar () 4 5 //@property (nonatomic,weak)UIButton *centerButton; 6 7 @en

IOS第二天-新浪微博 - 添加搜索框,弹出下拉菜单 ,代理的使用 ,HWTabBar.h(自定义TabBar)

********HWDiscoverViewController.m(发现) - (void)viewDidLoad { [super viewDidLoad]; // 创建搜索框对象 HWSearchBar *searchBar = [HWSearchBar searchBar]; searchBar.width = 300; searchBar.height = 30; self.navigationItem.titleView = searchBar; //设置titleView 是搜索框

猫猫学iOS(四十三)之网易彩票底部自定义TabBar实现切换

猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243?viewmode=contents 效果: 代码: NYTabBarController // // NYTabBarController.m // 彩票lottery // // Created by apple on 15-5-9. // Copyright (c) 2015年 znycat. All rights reserved. // #import

iOS 自定义tabbar 关于push问题 小技巧

在开发的时候,相信大家都用过tabbar ,今天我在写项目的时候也用到了tabbar  紧着着一系列问题就来了 需求:我的项目的主要框架是tabbar ,但是用系统的tabbar不美观 于是我就自定义了我的tabbar,创建了一个类,继承自UITabBarController,在这个类中我将系统原生的tabbar隐藏了,就写了这样一句话, self.tabBar.hidden=YES; 然后就是一系列的我们写得不能在熟的代码了,引入viewcontroller的头文件,然后实例化,将viewco