标签: uibarbuttonitem

更改UINavigationBar中UIBarButtonItem的宽度

我正在创建一个UIBarButtonItem并将其添加到我的导航栏,如下所示:

(void)viewDidLoad { 

   ...

   // Add the refresh button to the navigation bar
   UIButton *refreshButton = [UIButton buttonWithType:UIButtonTypeCustom];
   [refreshButton setFrame:CGRectMake(0,0,30,30)];
   [refreshButton setImage:[UIImage imageNamed:@"G_refresh_icon.png"] forState:UIControlStateNormal];
   [refreshButton addTarget:self action:@selector(refreshData) forControlEvents:UIControlEventTouchUpInside];
   UIBarButtonItem *refreshBarButton = [[[UIBarButtonItem alloc] initWithCustomView:refreshButton] autorelease];
   self.navigationItem.leftBarButtonItem = refreshBarButton;
}
Run Code Online (Sandbox Code Playgroud)

它在我运行时看起来是正确的,但我可以通过点击导航栏从x = 0到大约100来选择条形按钮项目.如何调整可选区域的宽度为30像素?

uinavigationbar uibarbuttonitem uinavigationitem ios

20
推荐指数
6
解决办法
5万
查看次数

如何为UIBarButtonItem设置标题?

我是初学的iPhone开发者.

如何以编程方式设置标题UIBarButtonItem

我的代码如下:

self.navigationItem.rightBarButtonItems =
    UIBarButtonItem(
        barButtonSystemItem: .Cancel, target: self,
        action: "barButtonItemClicked:")

@IBAction func barButtonItemClicked(sender: UIBarButtonItem) {
    //print something
}
Run Code Online (Sandbox Code Playgroud)

uibarbuttonitem ios swift

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

以编程方式将UIBarButtonItem添加到UINavigationBar

我放弃了在UINavigationBarUIInterfaceBuilder.我以模态方式呈现此视图,只想UIBackBarButton返回到我的上一个视图.我有一个出口和财产UINavigationBar声明.我想在我的viewDidLoad方法中,我可以创建一个UIBackButton这样的:

UIBarButtonItem *backButton = 
[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonItemStyleBordered 
                                              target:self 
                                              action:@selector(goBack)];
self.navigationItem.backBarButtonItem = backButton;
[backButton release];
Run Code Online (Sandbox Code Playgroud)

但我没有看到我UIBackBarButtonItemUINavigationBar.我想我在这里做错了,因为我不认为我UINavigationBar知道我试图以UIBackBarButtonItem这种方式添加它.我是否必须创建一个NSArray,将按钮放入其中,并为NavigationBar设置setItems?

我对navigationItem属性如何工作UINavigationBar以及对setItems感到困惑.任何帮助,将不胜感激.谢谢!

iphone uinavigationbar uibarbuttonitem ios

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

在UIToolbar之间添加间距

我有一个工具栏,如下所示:

在此输入图像描述

问题是它有点混乱,因此我想为它添加一些间距.我试过做:

UIBarButtonItem *spacer = 
 [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace 
                                               target:nil 
                                               action:nil];

self.toolbar_array = 
 [[NSMutableArray alloc] initWithObjects:self.mention, 
                                         spacer, 
                                         self.picture, 
                                         spacer, 
                                         share, 
                                         spacer, 
                                         self.message, nil];
Run Code Online (Sandbox Code Playgroud)

但它仍然给了我同样的东西.如何在这些之间添加10px UIBarButtonItems

iphone objective-c uibarbuttonitem ipad toolbaritems

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

在Cocoa Touch中更改其中的NavigationBar和UIBarButtonItem元素的高度

我认为它并不严格符合Apple指南,但我想它必定是可能的.我想更改UINavigationController中导航栏的高度以及该栏内UIBarButtonItem元素的高度.

使用这个问题的技巧我设法改变导航栏的高度,但我看不到调整条形按钮项高度的方法.

如果有人知道如何更改条形按钮项的大小,请帮助我.

cocoa-touch uinavigationbar uinavigationcontroller uibarbuttonitem

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

在UINavigationbar(iOS 11)中更改元素的色调颜色

我一直在使用此代码来更改导航栏中元素的色调:

UINavigationBar.appearance().tintColor = theme.labelColor
Run Code Online (Sandbox Code Playgroud)

但是,这不再适用于iOS 11.在iOS 11之前,导航栏中的按钮是UINavigationButtons,但在iOS 11中它们已被更改为_UIModernBarButton.我能够改变它们的色调颜色UIButton.appearance().tintcolor,但这会改变每个按钮的颜色.

这是一个比较:

iOS 10 Vs.  11 UINavigationBar按钮 任何人都知道如何更改导航栏中的按钮色调颜色?

更新01/09/2017: 看起来_UIButtonBarButton有正确的色调颜色,但_UIModernBarButton用颜色设置覆盖它UIButton.

更新18/09/2017:

"工程部就此问题提供了以下反馈:

UIView.tintColor不是外观选择器,特别是由于其继承属性而被记录为不能正常作为外观属性."

uinavigationbar uibutton uibarbuttonitem swift ios11

19
推荐指数
1
解决办法
3850
查看次数

如何以编程方式触发uibarbuttonitem click事件

我创造了一个 UIActionSheet

UIActionSheet * action = [[UIActionSheet alloc]initWithTitle:@""
                                                              delegate:self
                                                     cancelButtonTitle: @"cancel"
                                                destructiveButtonTitle: @"OK"
                                                     otherButtonTitles: nil];
          [action showInView:self.view];
          [action release];
Run Code Online (Sandbox Code Playgroud)

在取消按钮的事件中,UIActionSheet我想要触发一个事件UIBarButtonItem,这在我看来.

我的问题是如何在UIActionSheet委托方法中触发按钮事件(不触摸按钮)

iphone events uibarbuttonitem uiactionsheet ios

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

使用iOS7自定义UIBarButtonItem对齐

所以我遇到了许多其他人在使用UIButton作为自定义视图创建UIBarButtonItem时遇到的相同问题.

基本上,按钮向左或向右约10像素到远.当我使用没有自定义视图的常规BarButtonItem时,这不会发生.

这篇文章提供了部分解决方案: UIBarButton With Custom View

这是我通过子类化UIButton创建的代码(如另一篇文章中所述)

    - (UIEdgeInsets)alignmentRectInsets {
    UIEdgeInsets insets;
    if ([self isLeftButton]) {
        insets = UIEdgeInsetsMake(0, 9.0f, 0, 0);
    }
    else { // IF ITS A RIGHT BUTTON
        insets = UIEdgeInsetsMake(0, 0, 0, 9.0f);
    }
    return insets;
}


- (BOOL)isLeftButton {
    return self.frame.origin.x < (self.superview.frame.size.width / 2);
}
Run Code Online (Sandbox Code Playgroud)

这很好用,但当我从导航控制器弹出一个视图控制器回到这个主视图时,按钮仍然错误地定位了大约.3秒,然后它捕捉到正确的插图.

这是一个巨大的眼睛,我不知道如何阻止它像这样攫取.有什么想法吗?谢谢!

uibutton uinavigationcontroller uibarbuttonitem ios7

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

UIPopover presentFromBarButton偏离中心

我在一个项目中注意到,由于某种原因,右侧栏按钮项目上的弹出框的位置似乎偏向右侧.我尝试使用UIButton作为自定义视图,然后从该按钮呈现弹出窗口,但是如果我实际上为它提供了'居中'值,则popover似乎忽略了showFromRect.

偏离中心的人行道

这背后的代码非常简单:

- (void)viewDidLoad {
    [super viewDidLoad];

     UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"share"] style:UIBarButtonItemStylePlain target:self action:@selector(shareTap:)];

     self.navigationItem.rightBarButtonItem = button;
}

- (void)shareTap:(UIBarButtonItem *)button {
    self.popover = [[UIPopoverController alloc] initWithContentViewController:[[UIViewController alloc] init]];

    [self.popover presentPopoverFromBarButtonItem:button permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我切换到使用内部按钮,如上所述,我看到类似的行为(注意颜色变化,因此图像显示).

使用内部按钮

这个代码仍然相当简单:

- (void)viewDidLoad {
    [super viewDidLoad];

    UIButton *innerButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 22, 22)];
    [innerButton setImage:[UIImage imageNamed:@"share"] forState:UIControlStateNormal];
    [innerButton addTarget:self action:@selector(shareTap:) forControlEvents:UIControlEventTouchUpInside];

    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:innerButton];;
}

- (void)shareTap:(UIButton *)button {
    self.popover = [[UIPopoverController alloc] initWithContentViewController:[[UIViewController alloc] init]];

//    CGRect …
Run Code Online (Sandbox Code Playgroud)

uibarbuttonitem uipopovercontroller ios

18
推荐指数
1
解决办法
1067
查看次数

将UIToolBar添加到所有键盘(swift)

我正在尝试向所有键盘添加自定义UIToolBar,重复次数很少.我目前正在这样做的方式要求我将代码添加到我的所有viewDidLoads并将每个textfield的委托分配给我正在使用的viewController.我已经尝试创建自己的UIToolBar子类,但是当我的"完成"和"取消"按钮的目标是自我视图时,我发现我无法真正做到这一点.有没有人有任何关于创建一个易于重复使用的工具栏的建议?提前致谢.

override func viewDidLoad() {
    super.viewDidLoad()

    var toolBar = UIToolbar()
    toolBar.barStyle = UIBarStyle.Default
    toolBar.translucent = true
    toolBar.tintColor = UIColor(red: 76/255, green: 217/255, blue: 100/255, alpha: 1)
    var doneButton = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Done, target: self, action: "donePressed")
    var cancelButton = UIBarButtonItem(title: "Cancel", style: UIBarButtonItemStyle.Plain, target: self, action: "cancelPressed")
    var spaceButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: nil, action: nil)
    toolBar.setItems([cancelButton, spaceButton, doneButton], animated: false)
    toolBar.userInteractionEnabled = true
    toolBar.sizeToFit()

    stateField.inputAccessoryView = toolBar
    stateField.delegate = self
Run Code Online (Sandbox Code Playgroud)

repeat uitoolbar uibarbuttonitem ios swift

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