标签: uibarbuttonitem

Swift Custom NavBar后退按钮图像和文本

我需要在Swift项目中自定义后退按钮的外观.

这就是我所拥有的: 默认后退按钮

这就是我想要的: 自定义后退按钮

我已经尝试创建自己的UIBarButtonItem,但我无法弄清楚如何将图像放在文本旁边,而不是作为文本的背景或替代.

let backButton = UIBarButtonItem(title: "Custom", style: .Plain, target: self, action: nil    )
//backButton.image = UIImage(named: "imageName") //Replaces title
backButton.setBackgroundImage(UIImage(named: "imageName"), forState: .Normal, barMetrics: .Default) // Stretches image
navigationItem.setLeftBarButtonItem(backButton, animated: false)
Run Code Online (Sandbox Code Playgroud)

uikit uinavigationcontroller uibarbuttonitem ios swift

42
推荐指数
10
解决办法
6万
查看次数

显示/隐藏barButtonItem

我正试图显示/隐藏一个UIBarButtonItem.我barButton在右边添加了一个storyboard.然后在viewDidLoad,我做了rightBarButtonItemnil.后来,我把它设置为button我添加的storyboard.这是我的代码:

// Right barButtonItem added in storybord:
@IBOutlet weak var deleteBarButton: UIBarButtonItem! 

// viewDidLoad
self.navigationItem.rightBarButtonItem = nil

// Later on...
self.navigationItem.rightBarButtonItem = self.deleteBarButton
Run Code Online (Sandbox Code Playgroud)

当我设置self.deleteBarButtonrightBarButtonItem,没有任何反应.它没有显示出来.我做错了什么,显示/隐藏一个正确/最有效的方法是barButtonItem什么?

更新

我尝试了以下方法:

self.deleteBarButton.hidden = true
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

UIBarButtonItem 没有名为'hidden'的成员

uibarbuttonitem ios swift

41
推荐指数
3
解决办法
4万
查看次数

如何在UIBarButtonItem中添加UIGestureRecognizer,就像在iPad应用程序中常见的undo/redo UIPopoverController方案一样?

问题

在我的iPad应用程序中,在按下并保持事件后才能将弹出窗口附加到按钮栏项目.但这似乎是撤消/重做的标准.其他应用程序如何做到这一点?

背景

我的UIKit(iPad)应用程序的工具栏中有一个撤消按钮(UIBarButtonSystemItemUndo).当我按下撤销按钮时,它会触发它的动作,即undo:,并且正确执行.

然而,在iPad上撤消/重做的"标准UE惯例"是按下撤销执行撤消,但按住按钮会显示一个弹出控制器,用户选择"撤消"或"重做"直到控制器被解除.

附加弹出控制器的常规方法是使用presentPopoverFromBarButtonItem:,我可以很容易地配置它.要仅在按住之后显示此内容,我们必须设置视图以响应"长按"手势事件,如此代码段中所示:

UILongPressGestureRecognizer *longPressOnUndoGesture = [[UILongPressGestureRecognizer alloc] 
       initWithTarget:self 
               action:@selector(handleLongPressOnUndoGesture:)];
//Broken because there is no customView in a UIBarButtonSystemItemUndo item
[self.undoButtonItem.customView addGestureRecognizer:longPressOnUndoGesture];
[longPressOnUndoGesture release];
Run Code Online (Sandbox Code Playgroud)

有了这个,在按下并保持视图后,方法handleLongPressOnUndoGesture:将被调用,在这个方法中,我将配置并显示undo/redo的popover.到现在为止还挺好.

这个问题是没有附加视图.self.undoButtonItem是一个UIButtonBarItem,而不是一个视图.

可能的解决方案

1)[理想] 将手势识别器附加到按钮栏项目.可以将手势识别器附加到视图,但UIButtonBarItem不是视图.它确实具有.customView的属性,但当buttonbaritem是标准系统类型时(在这种情况下它是),该属性为nil.

2)使用另一个视图.我可以使用UIToolbar,但这需要一些奇怪的命中测试,并且如果可能的话首先是一个全面的黑客攻击.我无法想到使用其他替代视图.

3)使用customView属性.像UIBarButtonSystemItemUndo这样的标准类型没有customView(它是nil).设置customView将删除它需要的标准内容.这将相当于重新实现UIBarButtonSystemItemUndo的所有外观和功能,如果可能的话.

如何将手势识别器附加到此"按钮"?更具体地说,如何在iPad应用程序中实现标准的按住 - 显示 - 重做 - 弹出窗口?

想法?非常感谢,特别是如果有人真的在他们的应用程序中工作(我在想你,omni)并想分享......

cocoa-touch undo-redo uibarbuttonitem ipad uigesturerecognizer

39
推荐指数
5
解决办法
2万
查看次数

UISearchBar取消按钮颜色?

当我将UISearchBar放入Interface Builder中的视图中,并将其样式更改为Black Opaque时,取消按钮保持不合适的蓝色/灰色并且不会变为黑色.

如何将取消按钮设为黑色?

编辑:它确实像这样工作:

// Assume a UISearchBar searchBar.
NSArray *subviews = [searchBar subviews];

// The index depends on how you configure the searchBar.
UIButton *cancelButton = [subviews objectAtIndex:3];

// Set the style to "normal" style.
[cancelButton setStyle:0];
Run Code Online (Sandbox Code Playgroud)

但该setStyle:方法来自私有框架,因此在向Apple提交应用程序时可能会出现问题.

cocoa-touch background-color uibarbuttonitem uisearchbar ios

38
推荐指数
5
解决办法
3万
查看次数

如何隐藏/显示导航栏中的右键

我需要在导航栏中隐藏右键,然后在用户选择一些选项后取消隐藏它.

不幸的是,以下不起作用:

NO GOOD: self.navigationItem.rightBarButtonItem.hidden = YES;  // FOO CODE
Run Code Online (Sandbox Code Playgroud)

有办法吗?

objective-c uibarbuttonitem rightbarbuttonitem ios

38
推荐指数
7
解决办法
6万
查看次数

如何将UIBarButtonItem同时包含图像和文本?

当我尝试将图像用于UIBarButtonItem时,不显示文本.有没有办法显示文字和图像?

cocoa-touch objective-c uibarbuttonitem

37
推荐指数
4
解决办法
3万
查看次数

如何在UIBarButtonItem上设置字体大小?

我找不到在自定义UIBarButtonItem中设置标题字体大小的方法.我能想到解决这个问题的唯一方法是将其设置为我想避免的图像.还有其他建议吗?

iphone font-size uibarbuttonitem

36
推荐指数
2
解决办法
3万
查看次数

如何在UINavigationBar中为按钮更改设置动画?

-(void)setEditing:(BOOL)editing animated:(BOOL)animated在我的代码中调用方法来交换导航栏RHS上的两个按钮.

-(void)setEditing:(BOOL)editing animated:(BOOL)animated {  
  [super setEditing:editing animated:animated];  

  // Toggle ‘+’ and ‘Add To Order’ button.    

  if( editing ) {
    self.navigationItem.rightBarButtonItem = self.addItemButton;  
  }  
  else {           
    self.navigationItem.rightBarButtonItem = self.addToOrderButton;  
  } 
}
Run Code Online (Sandbox Code Playgroud)

其中self.addItemButtonself.addToOrderButton是包含预定义UIBarButtonItems的ivars,设置为awakefromNib.

中的按钮self.addToOrderButton明显宽于中self.addItemButton,因此当触发编辑状态的更改时(通过点击editButtonItem导航LHS上的标准),我希望它们是两个宽度之间的微妙动画.

如果我周围全if:else[UIView beginAnimations:nil context:NULL];[UIView commitAnimations];按钮更改确实动画,但他们从左上角,而不是替代的位置,飞入个别地方,只是动画它们的宽度.

我如何设置导航栏元素的动画,以便每个人(RHS按钮,标题)以更恰当,更有限的方式生成动画?

iphone animation uinavigationbar uibarbuttonitem ios

36
推荐指数
1
解决办法
1万
查看次数

UINavigationBar UIBarButtonItems比所需的点击区域大得多

希望有人可以帮助我 - 我在网上搜索答案,但找不到 -

添加到UINavigationBar的UIBarButtonItem具有比所需更大的点击区域 - 例如,打开任何项目,你有一个带按钮的导航栏,点击按钮结尾和导航栏标题之间​​的任意位置 - 按钮点击,当你明显没有点击按钮时 -

也可以尝试这一点 - 点击导航栏下方,按钮下方,按钮点击导航栏下方约5个像素 -

我的问题是这个 -

我已经增加了一个自定义首部和按钮,用于一个tableview-但是当我点击标题中的按钮,所述按钮UINavigationBar的触发对那些5+像素代替按钮在tableview中报头 -

我做了一个测试,并从UINavigationBar中删除了按钮,有趣的是,对于导航栏下方的5个像素,即使导航栏中没有按钮,标题中的按钮也不会触发 -

它几乎像导航栏一样保留了低于其自身的5个像素作为点击空间 -

我的问题是这个 -

有人可以告诉我如何使导航栏没有为其按钮抓取额外的5+像素?

非常感谢 ;)

iphone uinavigationbar uibarbuttonitem

35
推荐指数
2
解决办法
9992
查看次数

使用swift IOS使UIBarButtonItem消失

我有一个我从故事板链接到的IBOutlet

@IBOutlet var creeLigueBouton: UIBarButtonItem!
Run Code Online (Sandbox Code Playgroud)

如果条件成立,我想让它消失

if(condition == true)
{
    // Make it disappear
}
Run Code Online (Sandbox Code Playgroud)

uibarbuttonitem conditional-statements iboutlet swift

34
推荐指数
5
解决办法
3万
查看次数