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
(符合相应协议)并添加UITableView
和UIToolbar
或您需要的任何子视图。【参考方案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 中移除发光(光)?的主要内容,如果未能解决你的问题,请参考以下文章