【问题标题】:iOS 6 - UIBarButtonItem setStyle not workingiOS 6 - UIBarButtonItem setStyle 不起作用
【发布时间】:2014-03-11 10:33:11
【问题描述】:

我在UIToolBar 中有一个UIBarButtonItem。我已经设置了这样的代码:

UIBarButtonItem *barbutton=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(actionSheet:)];
[barbutton setStyle:UIBarButtonItemStyleBordered];
[toolBar setItems:[NSArray arrayWithObjects: [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil], barButton, nil]] ;
[toolBar setClipsToBounds:YES];

我希望 barButton 带有边框,但只显示内置操作图标。知道我可能缺少什么吗?

【问题讨论】:

    标签: ios objective-c ios6 uibarbuttonitem uitoolbar


    【解决方案1】:

    在搜索此问题时,我发现您想要的样式 - UIBarButtonItemStyleBordered 仅在您使用 initWithImage 初始化 UIBarButtonItem 时应用。

    所以,也许您可​​以获取操作按钮的图像并尝试一下

    UIBarButtonItem *barbutton = [[UIBarButtonItem alloc] initWithImage:@"action.png" style:UIBarButtonItemStyleBordered target:nil action:nil];
    [barbutton setStyle:UIBarButtonItemStyleBordered];
    

    告诉我这是否适合你。干杯!


    编辑

    在测试您自己的代码后,它似乎对我来说运行良好。线

    [barbutton setStyle:UIBarButtonItemStyleBordered];
    

    会做出这样的动作按钮

    在评论以上行时,我得到一个这样的按钮

    这不是你想要的吗?

    【讨论】:

    • 是的。这就是我想要的。出于某种原因,这对我来说似乎没有发生。:(
    • 使用 xib 文件检查您的 toolBar 网点。并为当前项目尝试 Product>Clean。
    • 这会如何影响 UIBarButton?
    • 我不完全知道,但清理项目有时会消除随机错误...您的确切代码对我有用,所以我不知道您可能出了什么问题。
    • 嗯。有点奇怪。相同的代码适用于 UINavigationBar,但不适用于 UIToolBar。
    【解决方案2】:

    在 iOS 6 中你可以使用 UIBarButtonItem 类的新方法:

    - (void)setBackgroundImage:(UIImage *)backgroundImage
                  forState:(UIControlState)state
                     style:(UIBarButtonItemStyle)style
                barMetrics:(UIBarMetrics)barMetrics
    

    它为指定的状态、样式和指标设置背景图像。 [Apple 文档][1]

    中提供了更多详细信息

    希望对你有所帮助。

    【讨论】:

      【解决方案3】:

      使用以下代码解决 ios 6 问题。在 IOS 7 上也可以。

      UIButton* btton = [UIButton buttonWithType:UIButtonTypeCustom];
      [btton setFrame:CGRectMake(0, 0, 30, 30)];
      [btton addTarget:self action:@selector(actionMethod) forControlEvents:UIControlEventTouchUpInside];
      [btton setImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateNormal];
      
      UIBarButtonItem *rightButtonItem  = [[UIBarButtonItem alloc] initWithCustomView:btton];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-06-30
        • 1970-01-01
        • 2012-09-25
        • 1970-01-01
        • 2022-01-11
        • 1970-01-01
        • 2020-05-09
        • 1970-01-01
        相关资源
        最近更新 更多