iPhone:按下时如何从 UIBarButtonItem 中移除发光(光)?

Posted

技术标签:

【中文标题】iPhone:按下时如何从 UIBarButtonItem 中移除发光(光)?【英文标题】:iPhone: How to remove glow (light) from UIBarButtonItem when pressed? 【发布时间】:2012-07-08 16:49:31 【问题描述】:

我正在尝试从 UIBarButton 项中移除发光,以便我的文本看起来是标签而不是按钮。我已经看到各种帖子谈论如何通过界面构建​​器或通过设置布尔变量“showsTouchWhenHighlighted”来做到这一点,但这些选项对我来说都不是可用的。我尝试在 .m viewDidLoad 中设置 showTouchWhenHighlighted,我在其中更改了字体和字体大小,但 UIBarButtonItem 似乎没有该属性。我也只有下图中的选项可以在 InterfaceBuilder 中更改。

【问题讨论】:

不幸的是,您不能使用标准栏按钮项目来做到这一点。如果您想将其自定义到该级别,则必须创建一个带有自定义视图的栏按钮项目,该视图实际上是一个按您想要的方式配置的按钮(例如,不发光)并添加它而不是标准项目。 【参考方案1】:

有一种方法可以做到这一点(有点小技巧,但它有效)。只需将UIButton 拖到您的工具栏中(而不是UIBarButtonItem)。然后将自动为您创建一个UIBarButtonItem 作为UIButton 的超级视图。然后你就这样设置它:

UIBarButtonItem

风格:素色 标题:(空)

UIButton

类型:自定义 标题:(此处为您的实际标签标题) 文字颜色:白色 在突出显示时显示触摸:(未选中)

这里是一个截图作为参考:

注意:请记住,从现在开始,对文本的任何更新都必须在 UIButton 上进行

【讨论】:

当我尝试单击/拖动 UIButton 到“标签”的位置时,它会将它扔到我的 NavigationBar 上方或完全放在我的 TableView 上。我做错了什么?谢谢! 从您的屏幕截图中可以看出,您似乎正在处理UITableViewController。如果您想在屏幕上显示多个元素,这不是一个好主意。我建议您使用UIViewController(符合相应协议)并添加UITableViewUIToolbar 或您需要的任何子视图。【参考方案2】:

试试这个:

`

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(140 , 0, 50, 250)];
    [label setBackgroundColor:[UIColor clearColor]];
    label.text = @"TEXT";
    UIView *view = (UIView *) label;
    [self.barItem setCustomView:view];

`

注意:self.barItem 是从对象库中添加的 UIBarButtonItem,放置在两个灵活空间之间。

另一种方法是去掉[self.barItem setCustom:view]这一行,改变标签(宽度)的参数,使其填满整个工具栏,并在代码中自行设置对齐方式为中间和字体,

【讨论】:

以上是关于iPhone:按下时如何从 UIBarButtonItem 中移除发光(光)?的主要内容,如果未能解决你的问题,请参考以下文章

按下时隐藏底栏 - Iphone X 上的动画冻结

如何在按钮按下时删除子/精灵?

如何在鼠标按下时重复调用一个函数?

在按下时查看:按下时更改背景颜色?如何显示正在按下视图?

按下 UIBarButton 时,UIView 会快速恢复到原始帧

iPhone上的uibarbutton和popoverview