:6; self.navigationItem.rightBarButtonItem.imageInsets = UIEdgeInsetsMake(0,-inset,0,inset); 2.填充方式 UIBarButtonItem *fixedSpaceBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace
简介 UIBarButtonItem 默认是不能 设置 Badge 所以我们可以对它扩展使之支持 实现方法 添加如下代码 UIBarButtonItem+Badge.h #import <UIKit/ UIKit.h> @interface UIBarButtonItem (Badge) @property (strong, nonatomic) UILabel *badge; // Badge shouldHideBadgeAtZero; // Badge has a bounce animation when value changes @property BOOL shouldAnimateBadge; @end UIBarButtonItem +Badge.m #import <objc/runtime.h> #import "UIBarButtonItem+Badge.h" NSString const *badgeKey = @"badgeKey shouldAnimateBadgeKey = @"shouldAnimateBadgeKey"; NSString const *badgeValueKey = @"badgeValueKey"; @implementation UIBarButtonItem
SXBarViewPositionLeft]; [self setLeftBarButtonItems:nil]; [self sx_setLeftBarButtonItem:[[UIBarButtonItem [self sx_setLeftBarButtonItem:leftBarButtonItem]; } } -(void)sx_setRightBarButtonItem:(UIBarButtonItem setRightBarButtonItems:nil]; [self sx_setRightBarButtonItem:rightBarButtonItem]; } } -(UIBarButtonItem *)fixedSpaceWithWidth:(CGFloat)width { UIBarButtonItem *fixedSpace = [[UIBarButtonItem alloc]initWithBarButtonSystemItem } } } @end 3、自定义view添加到leftBarButtonItem self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem
UIBarButtonItem我用了这些姿势才能和你交互 下面是需求完成图(自己做了优化) 字符串和传递进来的一样 则不允许进行提交交互 当编辑框没有任何的编辑文字也不允许交互 ?
*leftButton = [[UIBarButtonItem alloc] initWithCustomView:left]; [item setLeftBarButtonItem:leftButton 修改UIBarButtonItem 的边距 @interface UINavigationItem (margin) @end @implementation UINavigationItem (margin ) #if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_6_1 - (void)setLeftBarButtonItem:(UIBarButtonItem * *negativeSeperator = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace *negativeSeperator = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace
] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]]; returnnav; } 1.设置按钮操作 //返回按钮 UIBarButtonItem * buttonItem = [[UIBarButtonItem alloc]initWithTitle:nil style:UIBarButtonItemStyleDone target:self *leftItem = [[UIBarButtonItem alloc] initWithCustomView:leftBtn]; self.navigationItem.leftBarButtonItem *rightItem = [[UIBarButtonItem alloc] initWithCustomView:moreBtn]; self.navigationItem.rightBarButtonItem = rightItem; //把view添加到nav self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithCustomView
btn addTarget:self action:@selector(buttonClicked) forControlEvents:UIControlEventTouchUpInside]; UIBarButtonItem *btn_right = [[UIBarButtonItem alloc] initWithCustomView:btn]; UIBarButtonItem *negativeSpacer = [ [UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action *itemRight = [[UIBarButtonItem alloc] initWithCustomView:btn]; UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action
navigationItem.largeTitle = "导航" navigationItem.largeSubtitle = "子标题" } } 效果 UINavigationItem.png UIBarButtonItem super.viewDidLoad() view.backgroundColor = .systemGreen let barButtonItemOne = UIBarButtonItem barButtonSystemItem: .add, target: self, action: #selector(handleEvent)) let barButtonItemTwo = UIBarButtonItem (20) let flexibleSpace = UIBarButtonItem.flexibleSpace() navigationItem.rightBarButtonItems , barButtonItemThree, flexibleSpace, barButtonItemFour] } @objc func handleEvent(_ sender: UIBarButtonItem
actionBar.translucent = YES; [actionBar sizeToFit]; actionBar.barStyle = UIBarStyleBlackTranslucent; UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Done", @"") self action:@selector(handleActionBarPreviousNext:) forControlEvents:UIControlEventValueChanged]; UIBarButtonItem *prevNextWrapper = [[UIBarButtonItem alloc] initWithCustomView:_prevNext]; UIBarButtonItem *flexible = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil
三、关于UIBarButtonItem 一个UINavigationItem中,还可以包含许多BarButtonItem,BarButtonItem是一系列的按钮,会出现在导航栏的左侧或者右侧 例如: UIBarButtonItem * button = [[UIBarButtonItem alloc]initWithTitle:@"按钮" style:UIBarButtonItemStyleDone :(nullable UIBarButtonItem *)item animated:(BOOL)animated; - (void)setRightBarButtonItem:(nullable UIBarButtonItem :(nullable NSArray<UIBarButtonItem *> *)items animated:(BOOL)animated; - (void)setRightBarButtonItems :(nullable NSArray<UIBarButtonItem *> *)items animated:(BOOL)animated; 四、再看UIBarButtonItem 上面我们了解到了
view.backgroundColor = .red // 左侧 navigationItem.leftBarButtonItems = [ UIBarButtonItem (barButtonSystemItem: .add, target: self, action: #selector(gotoNextViewController)), UIBarButtonItem UISwitch() // 中间 let fixedGroup = UIBarButtonItemGroup.fixedGroup(items: [ UIBarButtonItem [fixedGroup, movableGroup] // 右侧 navigationItem.rightBarButtonItems = [ UIBarButtonItem (barButtonSystemItem: .camera, target: nil, action: nil), UIBarButtonItem(barButtonSystemItem
在BaseViewController的ViewDidLoad中如下设置即可:注意不用在设置 self.navigationItem.leftBarButtonItem =[[UIBarButtonItem :selfaction:@selector(start)]; UIBarButtonItem*item2 = [[UIBarButtonItemalloc]initWithTitle:@"暂停"style `对象,可以使用系统提供的很多常用风格的对象,也可以根据需求进行自定义,`每个UIBarButtonItem可以绑定一个事件`,不常使用。 UIBarButtonItem *one = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:nil action:nil]; UIBarButtonItem *two = [[UIBarButtonItem alloc] initWithBarButtonSystemItem
2.3 回退按钮 2.3.1 回退按钮自定义 UIBarButtonItem * backItem = [[UIBarButtonItem alloc] initWithImage: [UIImage backTo)]; [backItem setTitle:@"Test"]; [self.navigationItem setLeftBarButtonItem: backItem]; 错误做法: UIBarButtonItem * backItem = [[UIBarButtonItem alloc] init];//BackNavIcon [backItem setTitle: @"Test"]; [backItem setImage details/39957741 2.5.3 去掉回退按钮文字 最近iOS项目中要求导航栏的返回按钮只保留那个箭头,去掉后边的文字,在网上查了一些资料,最简单且没有副作用的方法就是: [[UIBarButtonItem ShareIcon"]; img = [img imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal]; _shareItem = [[UIBarButtonItem
我们用了一个UIBarButtonItem组成的数组,因为可以放多个按钮,只要在数组中继续添加就可以了,最后将数组作为工具栏的Items添加进去就可以了。 *cancelBtn = [[UIBarButtonItem alloc] initWithTitle:@"取消" style:UIBarButtonItemStyleBordered target: *flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace 的数组,来存储三个UIBarButtonItem对象,注意,为什么是三个呢,界面上不是只有取消和完成两个按钮吗? 其余两个按钮的代码不多说了,挺简单的,这个占位按钮很有意思: UIBarButtonItem *flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem
UINavigationBar *)navigationBar shouldPushItem:(UINavigationItem *)item { //设置导航栏返回按钮文字 UIBarButtonItem *back = [[UIBarButtonItem alloc] initWithTitle:nil style:UIBarButtonItemStylePlain target:nil action self.view.backgroundColor = [UIColor whiteColor]; //重新设置下级子页面导航栏返回按钮文字 UIBarButtonItem * item = [[UIBarButtonItem alloc] initWithTitle:nil style:UIBarButtonItemStylePlain target:nil action:nil navigationBar shouldPushItem:(UINavigationItem *)item { //设置导航栏返回按钮文字为透明的,可能造成导航标题不居中的问题 [[UIBarButtonItem
步骤就是创建一个UIBarButtonItem对象,然后直接把这个对象赋值给self.navigationItem.leftBarButtonItem或者右边的。 当然也能够一次创建非常多个UIBarButtonItem组成一个数组。然后把这个数组赋值给self.navigationItem.leftBarButtonItems。 后者被赋值一个UIBarButtonItem对象,所以仅仅能显示一个 //显示顺序,左边:按数组顺序从左向右;右边:按数组顺序从右向左 //能够初始化成系统自带的一些barButton, 能够是随意一个UIView UIBarButtonItem *barBtn2=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action:@selector(changeColor2)]; UIBarButtonItem *barBtn3=[[UIBarButtonItem alloc]initWithImage
主要利用UIBarButtonItem 的UIBarButtonSystemItemFixedSpace 系统控件 UIBarButtonItem *negativeSpacer = [[UIBarButtonItem :@selector(in)]; UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc] UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem UIBarButtonItem *spaceButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace (Extension) @implementation UIBarButtonItem (Extension) + (UIBarButtonItem*)barButtonItemWithTarget:
ViewController - (void)viewDidLoad { [super viewDidLoad]; self.title = @"Presentation"; UIBarButtonItem *rightBar = [[UIBarButtonItem alloc] initWithTitle:@"pop" style:UIBarButtonItemStyleDone target:self action:@selector(popView:)]; self.navigationItem.rightBarButtonItem = rightBar; } - (void)popView:(UIBarButtonItem
imageNamed:@"LeftButton_back_Icon"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; UIBarButtonItem *leftButton = [[UIBarButtonItem alloc] initWithImage:leftButtonIcon 仅仅设置返回按钮的文字 - (void)setBackButtonTitle { UIBarButtonItem *leftButton = [[UIBarButtonItem alloc] initWithTitle goToBack) forControlEvents:UIControlEventTouchUpInside]; [leftButtonView addSubview:leftButton]; UIBarButtonItem * leftBarButton = [[UIBarButtonItem alloc] initWithCustomView:leftButtonView]; self.navigationItem.leftBarButtonItem
创建按钮 : //创建第一个按钮 UIBarButtonItem * buttonItem = [[UIBarButtonItem alloc] initWithTitle:@"键盘附件 :self action:nil]; //创建第二个按钮 UIBarButtonItem * spaceItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@ :self action:nil]; //创建第二个按钮 UIBarButtonItem * spaceItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@