ios 购物车ios barbuttonitemm 怎么设置角标

&&&&&&&&&&&&&&&&&&&&&&&&& 14:46:43
&&网站联系: qq: email:&
软件世界网【学习ios之路:UI系列】UITabBarController , UIToorBar
【学习ios之路:UI系列】UITabBarController , UIToorBar
& &1. UITabBarController(标签视图控制器),用来管理具有并列关系的视图控制器,多个界面同时存在.
&&& UITableBarController 和UINavigationController 类似, UITabBarController 也可以轻松地管理多个控制器,轻松完成控制器之间的切换,典型的例子就是QQ 、微信等应?。效果如下图:
①使用UITabBarController步骤如下: &&&& (1) 初始化UITabBarController &&&& (2) 设置UIWindow的rootViewController为UITabBarController &&&& (3)创建相应的子控制器(viewcontroller) &&&& (4)把子控制器添加到UITabBarController
实现上述效果代码如下:
//创建第一个试图控制器
FirstViewController *firstVc = [[FirstViewController alloc] init];
//设置barButton标题
&firstVc.tabBarItem.title = @"消息";
firstVc.tabBarItem.badgeValue = @"new";
//设置被选中时的图片
first Vc.tabBarItem.selectedImage = [UIImage imageNamed:@"tabbar_contacts"];
//设置图片
&firstVc.tabBarItem.image = [UIImage imageNamed:@"tabbar_mainframe"];
firstVc.tabBarItem.tag = 100;//设置tag
//创建第二个控制器
SecondViewController *secondVc = [[SecondViewController alloc] init];
secondVc.tabBarItem.title = @"通讯里";
//被选中的时的图片
secondVc.tabBarItem.selectedImage = [UIImage imageNamed:@"tabbar_discover"];
secondVc.tabBarItem.badgeValue = @"33";
secondVc.tabBarItem.tag = 101;
//修改字体的位置
[secondVc.tabBarItem setTitlePositionAdjustment:UIOffsetMake(-1, -1)];
secondVc.tabBarItem.image = [UIImage imageNamed:@"tabbar_contacts"];
&ThirdViewController *thirdVc = [[ThirdViewController alloc] init];
thirdVc.tabBarItem.title = @"发现";
thirdVc.tabBarItem.tag = 102;
thirdVc.tabBarItem.badgeValue = @"2";
thirdVc.tabBarItem.image = [UIImage imageNamed:@"tabbar_discover"];
thirdVc.tabBarItem.selectedImage = [UIImage imageNamed:@"tabbar_me.png"];
&FoursViewController *fourVc = [[FoursViewController alloc] init];
fourVc.tabBarItem.title = @"我的";
fourVc.tabBarItem.tag = 103;
fourVc.tabBarItem.image = [UIImage imageNamed:@"tabbar_me.png"];
fourVc.tabBarItem.badgeValue = @"88";
fourVc.tabBarItem.selectedImage = [UIImage imageNamed:@"tabbar_discover"];
FifthViewController *fifthVC = [[FifthViewController alloc] init];
fifthVC.tabBarItem.title
= @"下载";
fifthVC.tabBarItem.image = [UIImage imageNamed:@"qr_toolbar_online_download_hl"];
SixViewController *sixVc = [[SixViewController alloc] init];
sixVc.tabBarItem.title = @"工具";
sixVc.tabBarItem.image = [UIImage imageNamed:@"qr_toolbar_light_up_hl"];
//当标签视图控制器管理的视图控制器超过5个时.标签栏第五个标签自动变成More(更多)标签,
&除了前四个标签,其余标签全部放入更多中.
//创建UITabBarController对象
UITabBarController *barVC = [[UITabBarController alloc] init];
//1.配置标签视图控制器所管理的多个视图控制器
barVC.viewControllers = @[firstVc,secondVc,thirdVc,fourVc,fifthVC,sixVc];
//3.修改标签栏的渲染颜色
barVC.tabBar.barTintColor
= [UIColor whiteColor];
barVC.tabBar.tintColor = [UIColor blackColor];
//4.设置默认选中的标签
barVC.selectedIndex = 2;
//设置默认视图控制器
barVC.selectedViewController = thirdVc;
//5.给tabBar设置背景图片
//barVC.tabBar.backgroundImage
= [UIImage imageNamed:@"320x49"];
//6.设置代理
barVC.delegate =
//7.将视图标签指定为window的根视图控制器
self.window.rootViewController = barVC;
&②UITabBarController控制器常用代理方法如下:
//询问标签是否可选中
- (BOOL)tabBarController:(UITabBarController *)tabBarController
shouldSelectViewController:(UIViewController *)viewController
return YES;
//当选中标签时触发
- (void)tabBarController:(UITabBarController *)tabBarController
&didSelectViewController:(UIViewController *)viewController {
//需要选中的是第二个标签,则去掉角标
if (viewController.tabBarItem.tag == 101) {
viewController.tabBarItem.badgeValue =
//将要开始自定义标签视图控制器所管理的多个视图控制器时触发,点击edit时
- (void)tabBarController:(UITabBarController *)tabBarController
willBeginCustomizingViewControllers:(NSArray *)viewControllers
NSLog(@"%s %d",__FUNCTION__,__LINE__);
NSLog(@"%@",viewControllers);
//结束自定义标签视图控制器所管理的多个视图控制器时触发.点击done时
- (void)tabBarController:(UITabBarController *)tabBarController didEndCustomizingViewControllers:(NSArray *)viewControllers changed:(BOOL)changed {
NSLog(@"%s %d",__FUNCTION__,__LINE__);
NSLog(@"%@ \n
%d",viewControllers,changed);
}③UITabBar
下方的工具条称为UITabBar ,如果UITabBarController有N个子控制器,那么UITabBar内部就会有N 个UITabBarButton作为子控件与之对应。 &&&& 注意: UITabBarButton在UITabBar中得位置是均分的,UITabBar的高度为49。
&&&& 在上面的程序中,UITabBarController有6个子控制器,所以UITabBar中有6个UITabBarButton,UITabBar的结构?大致如下图所示:
&& UITabBarButton ?面显?什么内容,由对应子控制器的 tabBarItem 属性来决定.如下:设置
firstVc.tabBarItem.title = @"消息";
firstVc.tabBarItem.badgeValue = @"new";
//设置被选中时的图片
first Vc.tabBarItem.selectedImage = [UIImage imageNamed:@"tabbar_contacts"];
//设置图片
&firstVc.tabBarItem.image = [UIImage imageNamed:@"tabbar_mainframe"];
& 注意:视图展示的顺序和添加的顺序一致,和导航控制器中不同,展现在眼前的是第一个添加的控制器对应的View。
2.UIToorBar
& 工具条,主要搭配导航控制器使用,由导航控制器控制,主要用来存储一些系统的辅助功能.在网页切换,微信的评论等. &可以在toolBar上添加任何View。其实它的原理是把你要添加的View先加到UIBarButtonItem里面,最后再把UIBarButtonItem数组一次性放到toolbar的items里面。
& UIBbarButtonItem有如下几种初始化的方法:
&&&& -initWithTitle
&&&& -initWithImage
&&&& -initWithBarButtonSystemItem
&&&& -initWithCustomView
实现效果如下:
实现代码如下:
//创建UIToorBar对象
UIToolbar *toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 64, 320, 49)];
toolBar.translucent = NO;//配置属性,毛玻璃效果
toolBar.barTintColor = [UIColor greenColor];//背景颜色
//设置字体样式
toolBar.tintColor = [UIColor purpleColor];
//toolbar样式
&//toolBar.barStyle = UIBarStyleBlackO
//设置图片
[toolBar setBackgroundImage:[UIImage imageNamed:@"user_guide_page6"] forToolbarPosition:UIBarPositionBottom barMetrics:UIBarMetricsDefault];
//添加到视图控制器的根视图上
[self.view addSubview:toolBar];
[toolBar release];
//UIBarButtonItem初始化方法1(initWithTitle)
UIBarButtonItem *barItems = [[UIBarButtonItem alloc] initWithTitle:@"妞1"
style:UIBarButtonItemStylePlain target:self action:@selector(handleBarAction:)];
//系统button
//UIBarButtonItem初始化方法2(initWithBarButtonSystemItem)
UIBarButtonItem *addItems = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:
UIBarButtonSystemItemAdd target:self action:@selector(handleAddAction:)];
//添加图片&pre name="code" class="objc"&
//UIBarButtonItem初始化方法3(initWithImage)
UIBarButtonItem *imageItems = [[UIBarButtonItem alloc] initWithImage:
[UIImage imageNamed:@"post_timeline_mood_icon_1"]
style:UIBarButtonItemStylePlain target:self action:@selector(handleReplyAction:)];
&pre name="code" class="objc"&
//UIBarButtonItem初始化方法2(initWithBarButtonSystemItem)
UIBarButtonItem *items = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:
UIBarButtonSystemItemFlexibleSpace target:self action:nil];
//调节buttonItem之间的间距
UIBarButtonItem *fiex = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:
UIBarButtonSystemItemFixedSpace target:self action:nil];
fiex.width
//将UIBarButtonItem添加到数组
//fiex 和items
起到调节按钮之间的位置
&NSArray *itemsArr1 = @[items,barItems,fiex,items,addItems,items,imageItems,items];
NSLog(@"%@",itemsArr1);
//NSArray *itemsArr = @[fiex,barItems,fiex,addItems,fiex,imageItems,fiex];
[toolBar setItems:itemsArr animated:YES];
[barItems release];
[itemsArr release];
发表评论:
TA的最新馆藏IOS 基础(17)
给UIBarButtonItem加一个延展
.h文件如下
.m文件如下
清除角标提醒
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:959次
排名:千里之外
转载:13篇
(1)(6)(1)(11)iPhone(16)
/info-detail-648885.html
1:直接复杂uibarButton类
//& UIBarButtonItem+Badge.h
//& therichest
//& Created by&淘股&on .
//& Copyright (c) 2015 taogu Inc. All rights reserved.
#import&&UIKit/UIKit.h&
@interface&UIBarButtonItem (Badge)
@property&(strong,&nonatomic)&UILabel&*
// Badge value to be display
@property&(nonatomic)&NSString&*badgeV
// Badge background color
@property&(nonatomic)&UIColor&*badgeBGC
// Badge text color
@property&(nonatomic)&UIColor&*badgeTextC
// Badge font
@property&(nonatomic)&UIFont&*badgeF
// Padding value for the badge
@property&(nonatomic)&CGFloat&badgeP
// Minimum size badge to small
@property&(nonatomic)&CGFloat&badgeMinS
// Values for offseting the badge over the BarButtonItem you picked
@property&(nonatomic)&CGFloat&badgeOriginX;
@property&(nonatomic)&CGFloat&badgeOriginY;
// In case of numbers, remove the badge when reaching zero
@property&BOOL&shouldHideBadgeAtZ
// Badge has a bounce animation when value changes
@property&BOOL&shouldAnimateB
//& UIBarButtonItem+Badge.h
//& therichest
//& Created by&淘股&on .
//& Copyright (c) 2015 taogu Inc. All rights reserved.
#import&&objc/runtime.h&
#import&&UIBarButtonItem+Badge.h&
NSString&const&*badgeKey =&@&badgeKey&;
NSString&const&*badgeBGColorKey =&@&badgeBGColorKey&;
NSString&const&*badgeTextColorKey =&@&badgeTextColorKey&;
NSString&const&*badgeFontKey =&@&badgeFontKey&;
NSString&const&*badgePaddingKey =&@&badgePaddingKey&;
NSString&const&*badgeMinSizeKey =&@&badgeMinSizeKey&;
NSString&const&*badgeOriginXKey =&@&badgeOriginXKey&;
NSString&const&*badgeOriginYKey =&@&badgeOriginYKey&;
NSString&const&*shouldHideBadgeAtZeroKey =&@&shouldHideBadgeAtZeroKey&;
NSString&const&*shouldAnimateBadgeKey =&@&shouldAnimateBadgeKey&;
NSString&const&*badgeValueKey =&@&badgeValueKey&;
@implementation&UIBarButtonItem (Badge)
@dynamic&badgeValue, badgeBGColor, badgeTextColor, badgeF
@dynamic&badgePadding, badgeMinSize, badgeOriginX, badgeOriginY;
@dynamic&shouldHideBadgeAtZero, shouldAnimateB
- (void)badgeInit
& &&// Default design initialization
& &&self.badgeBGColor&& = [UIColor&redColor];
& &&self.badgeTextColor&=
[UIColor&whiteColor];
& &&self.badgeFont& & & = [UIFont&systemFontOfSize:12.0];
& &&self.badgePadding&&
& &&self.badgeMinSize&&
& &&self.badgeOriginX&&
=&self.customView.frame.size.width&-&self.badge.frame.size.width/2;
& &&self.badgeOriginY&& = -4;
& &&self.shouldHideBadgeAtZero&=&YES;
& &&self.shouldAnimateBadge&=&YES;
& &&// Avoids badge to be clipped when animating its scale
& &&self.customView.clipsToBounds&=&NO;
#pragma mark - Utility methods
// Handle badge display when its properties have been changed (color, font, ...)
- (void)refreshBadge
& &&// Change new attributes
& &&self.badge.textColor&
& & & =&self.badgeTextColor;
& &&self.badge.backgroundColor&
=&self.badgeBGColor;
& &&self.badge.font&&
& & & & & =&self.badgeFont;
- (CGSize) badgeExpectedSize
& &&// When the value changes the badge could need to get bigger
& &&// Calculate expected size to fit new value
& &&// Use an intermediate label to get expected size thanks to sizeToFit
& &&// We don‘t call sizeToFit on the true label to avoid bad display
& &&UILabel&*frameLabel = [self&duplicateLabel:self.badge];
& & [frameLabel&sizeToFit];
& &&CGSize&expectedLabelSize = frameLabel.frame.size;
& &&return&expectedLabelS
- (void)updateBadgeFrame
& &&CGSize&expectedLabelSize = [self&badgeExpectedSize];
& &&// Make sure that for small value, the badge will be big enough
& &&CGFloat&minHeight = expectedLabelSize.height;
& &&// Using a const we make sure the badge respect the minimum size
& & minHeight = (minHeight &&self.badgeMinSize) ?&self.badgeMinSize&:
expectedLabelSize.height;
& &&CGFloat&minWidth = expectedLabelSize.width;
& &&CGFloat&padding =&self.badgePadding;
& &&// Using const we make sure the badge doesn‘t get too smal
& & minWidth = (minWidth & minHeight) ? minHeight : expectedLabelSize.width;
& &&self.badge.frame&=&CGRectMake(self.badgeOriginX,&self.badgeOriginY,
minWidth + padding, minHeight + padding);
& &&self.badge.layer.cornerRadius&=
(minHeight + padding) /&2;
& &&self.badge.layer.masksToBounds&=&YES;
// Handle the badge changing value
- (void)updateBadgeValueAnimated:(BOOL)animated
& &&// Bounce animation on badge if value changed and if animation authorized
& &&if&(animated &&&self.shouldAnimateBadge&&&
![self.badge.text&isEqualToString:self.badgeValue])
& & & &&CABasicAnimation&* animation = [CABasicAnimation&animationWithKeyPath:@&transform.scale&];
& & & & [animation&setFromValue:[NSNumber&numberWithFloat:1.5]];
& & & & [animation&setToValue:[NSNumber&numberWithFloat:1]];
& & & & [animation&setDuration:0.2];
& & & & [animation&setTimingFunction:[CAMediaTimingFunction&functionWithControlPoints:.4f&:1.3f&:1.f&:1.f]];
& & & & [self.badge.layer&addAnimation:animation&forKey:@&bounceAnimation&];
& &&// Set the new value
& &&self.badge.text&=&self.badgeValue;
& &&// Animate the size modification if needed
& &&NSTimeInterval&duration = animated ?&0.2&:&0;
& & [UIView&animateWithDuration:duration&animations:^{
& & & & [self&updateBadgeFrame];
- (UILabel&*)duplicateLabel:(UILabel&*)labelToCopy
& &&UILabel&*duplicateLabel = [[UILabel&alloc]&initWithFrame:labelToCopy.frame];
& & duplicateLabel.text&= labelToCopy.text;
& & duplicateLabel.font&= labelToCopy.font;
& &&return&duplicateL
- (void)removeBadge
& &&// Animate badge removal
& & [UIView&animateWithDuration:0.2&animations:^{
& & & &&self.badge.transform&=&CGAffineTransformMakeScale(0,&0);
& & }&completion:^(BOOL&finished) {
& & & & [self.badge&removeFromSuperview];
& & & &&self.badge&=&nil;
#pragma mark - getters/setters
-(UILabel*) badge {
& &&return&objc_getAssociatedObject(self,
&badgeKey);
-(void)setBadge:(UILabel&*)badgeLabel
& &&objc_setAssociatedObject(self,
&badgeKey, badgeLabel,&OBJC_ASSOCIATION_RETAIN_NONATOMIC);
// Badge value to be display
-(NSString&*)badgeValue {
& &&return&objc_getAssociatedObject(self,
&badgeValueKey);
-(void) setBadgeValue:(NSString&*)badgeValue
& &&objc_setAssociatedObject(self,
&badgeValueKey, badgeValue,&OBJC_ASSOCIATION_RETAIN_NONATOMIC);
& &&// When changing the badge value check if we need to remove the badge
& &&if&(!badgeValue || [badgeValue&isEqualToString:@&&]
|| ([badgeValue&isEqualToString:@&0&] &&&self.shouldHideBadgeAtZero))
& & & & [self&removeBadge];
& & }&else&if&(!self.badge)
& & & &&// Create a new badge because not existing
& & & &&self.badge& & & & & & & & & & & = [[UILabel&alloc]&initWithFrame:CGRectMake(self.badgeOriginX,self.badgeOriginY,&20,&20)];
& & & &&self.badge.textColor&
& & & & & =&self.badgeTextColor;
& & & &&self.badge.backgroundColor&
& & =&self.badgeBGColor;
& & & &&self.badge.font&&
& & & & & & & =&self.badgeFont;
& & & &&self.badge.textAlignment&
& & & =&NSTextAlignmentCenter;
& & & & [self&badgeInit];
& & & & [self.customView&addSubview:self.badge];
& & & & [self&updateBadgeValueAnimated:NO];
& & }&else&{
& & & & [self&updateBadgeValueAnimated:YES];
// Badge background color
-(UIColor&*)badgeBGColor {
& &&return&objc_getAssociatedObject(self,
&badgeBGColorKey);
-(void)setBadgeBGColor:(UIColor&*)badgeBGColor
& &&objc_setAssociatedObject(self,
&badgeBGColorKey, badgeBGColor,&OBJC_ASSOCIATION_RETAIN_NONATOMIC);
& &&if&(self.badge)
& & & & [self&refreshBadge];
// Badge text color
-(UIColor&*)badgeTextColor {
& &&return&objc_getAssociatedObject(self,
&badgeTextColorKey);
-(void)setBadgeTextColor:(UIColor&*)badgeTextColor
& &&objc_setAssociatedObject(self,
&badgeTextColorKey, badgeTextColor,&OBJC_ASSOCIATION_RETAIN_NONATOMIC);
& &&if&(self.badge)
& & & & [self&refreshBadge];
// Badge font
-(UIFont&*)badgeFont {
& &&return&objc_getAssociatedObject(self,
&badgeFontKey);
-(void)setBadgeFont:(UIFont&*)badgeFont
& &&objc_setAssociatedObject(self,
&badgeFontKey, badgeFont,&OBJC_ASSOCIATION_RETAIN_NONATOMIC);
& &&if&(self.badge)
& & & & [self&refreshBadge];
// Padding value for the badge
-(CGFloat) badgePadding {
& &&NSNumber&*number
=&objc_getAssociatedObject(self,
&badgePaddingKey);
& &&return&number.floatValue;
-(void) setBadgePadding:(CGFloat)badgePadding
& &&NSNumber&*number = [NSNumber&numberWithDouble:badgePadding];
& &&objc_setAssociatedObject(self,
&badgePaddingKey, number,&OBJC_ASSOCIATION_RETAIN_NONATOMIC);
& &&if&(self.badge)
& & & & [self&updateBadgeFrame];
// Minimum size badge to small
-(CGFloat) badgeMinSize {
& &&NSNumber&*number
=&objc_getAssociatedObject(self,
&badgeMinSizeKey);
& &&return&number.floatValue;
-(void) setBadgeMinSize:(CGFloat)badgeMinSize
& &&NSNumber&*number = [NSNumber&numberWithDouble:badgeMinSize];
& &&objc_setAssociatedObject(self,
&badgeMinSizeKey, number,&OBJC_ASSOCIATION_RETAIN_NONATOMIC);
& &&if&(self.badge)
& & & & [self&updateBadgeFrame];
// Values for offseting the badge over the BarButtonItem you picked
-(CGFloat) badgeOriginX {
& &&NSNumber&*number
=&objc_getAssociatedObject(self,
&badgeOriginXKey);
& &&return&number.floatValue;
-(void) setBadgeOriginX:(CGFloat)badgeOriginX
& &&NSNumber&*number = [NSNumber&numberWithDouble:badgeOriginX];
& &&objc_setAssociatedObject(self,
&badgeOriginXKey, number,&OBJC_ASSOCIATION_RETAIN_NONATOMIC);
& &&if&(self.badge)
& & & & [self&updateBadgeFrame];
-(CGFloat) badgeOriginY {
& &&NSNumber&*number
=&objc_getAssociatedObject(self,
&badgeOriginYKey);
& &&return&number.floatValue;
-(void) setBadgeOriginY:(CGFloat)badgeOriginY
& &&NSNumber&*number = [NSNumber&numberWithDouble:badgeOriginY];
& &&objc_setAssociatedObject(self,
&badgeOriginYKey, number,&OBJC_ASSOCIATION_RETAIN_NONATOMIC);
& &&if&(self.badge)
& & & & [self&updateBadgeFrame];
// In case of numbers, remove the badge when reaching zero
-(BOOL) shouldHideBadgeAtZero {
& &&NSNumber&*number
=&objc_getAssociatedObject(self,
&shouldHideBadgeAtZeroKey);
& &&return&number.boolValue;
- (void)setShouldHideBadgeAtZero:(BOOL)shouldHideBadgeAtZero
& &&NSNumber&*number = [NSNumber&numberWithBool:shouldHideBadgeAtZero];
& &&objc_setAssociatedObject(self,
&shouldHideBadgeAtZeroKey, number,&OBJC_ASSOCIATION_RETAIN_NONATOMIC);
// Badge has a bounce animation when value changes
-(BOOL) shouldAnimateBadge {
& &&NSNumber&*number
=&objc_getAssociatedObject(self,
&shouldAnimateBadgeKey);
& &&return&number.boolValue;
- (void)setShouldAnimateBadge:(BOOL)shouldAnimateBadge
& &&NSNumber&*number = [NSNumber&numberWithBool:shouldAnimateBadge];
& &&objc_setAssociatedObject(self,
&shouldAnimateBadgeKey, number,&OBJC_ASSOCIATION_RETAIN_NONATOMIC);
第二部实现调用
& &&// Build your regular UIBarButtonItem with Custom View
& &&UIImage&*image = [UIImage&imageNamed:@&someImage&];
& &&UIButton&*button
= [UIButton&buttonWithType:UIButtonTypeCustom];
& & button.frame&=&CGRectMake(0,0,image.size.width,
image.size.height);
& & [button&addTarget:self&action:@selector(buttonPress:)&forControlEvents:UIControlEventTouchDown];
& & [button&setBackgroundImage:image&forState:UIControlStateNormal];
& &&// 角标测试写1
& &&UIBarButtonItem&*navLeftButton = [[UIBarButtonItem&alloc]&initWithCustomView:button];
& &&self.navigationItem.leftBarButtonItem&=
& &&self.navigationItem.leftBarButtonItem.badgeValue&=&@&1&;
& &&self.navigationItem.leftBarButtonItem.badgeBGColor&=&self.navigationController.navigationBar.tintColor;
#pragma mark - Private
-(void)buttonPress:(id)sender
& &&self.navigationItem.leftBarButtonItem.badgeValue&=&@&&;//方法调用直接清楚角标
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:6897次
排名:千里之外
转载:26篇
(2)(6)(9)(3)(11)(3)(1)

我要回帖

更多关于 rightbarbuttonitem 的文章

 

随机推荐