UIButton 未在 iOS 中显示

Posted

技术标签:

【中文标题】UIButton 未在 iOS 中显示【英文标题】:UIButton not showing in iOS 【发布时间】:2011-08-17 10:06:04 【问题描述】:

以下是显示工具栏按钮的代码。

UIButton myButton = [UIButton buttonWithType:UIButtonTypeCustom];
UIImage *myImage = [UIImage imageNamed:@"img1.png"];

[myButton setBackgroundImage:myImage forState:UIControlStateNormal];
UIBarButtonItem *myToolbarButton = [[UIBarButtonItem alloc] initWithCustomView:myButton];

工具栏上没有显示任何内容。请告诉我有什么问题。

【问题讨论】:

可能是因为你没有设置按钮的框架... 【参考方案1】:
[myToolbar setItems:[NSArray arrayWithObject:myToolbarButton]]; // might help

或者如果它是一个导航栏

self.navigationItem.rightBarButtonItem = myToolbarButton;

您还应该为自定义按钮设置框架,如下所示:

UIButton *mybutton = [[UIButton alloc] initWithFrame:CGRectMake:0,0,200,50];

那么如果你想添加一个选择器/回调:

[myButton addTarget:self action:@selector(someMethod) forControlEvents:UIControlEventTouchUpInside];

【讨论】:

我已经做到了。我只是将 UIBarButtonItem 修改为具有自定义视图,因此将其添加到按钮数组中,然后将工具栏设置添加到它就完成了。 如何设置框架?我找了找,没找到合适的方法。 UIButton *mybutton = [[UIButton alloc] initWithFrame:CGRectMake:0,0,200,50]; 当我使用自定义视图(UIButton)初始化我的 UIBarButtonItem 时,如何注册函数回调?因为没有方法可以让我们这样做,即没有选择器参数。 谢谢。当我在工具栏上使用自定义视图(UIButton)初始化 UIBarButtonItem 时,我想将 uibarbuttonitemstyle 设置为 uibarbuttomitemstyleplain 以便在单击时发光。我该怎么做呢?因为在 initWithImage 中提供了设置样式选项。【参考方案2】:
self.navigationItem.leftBarButtonItem = myButtonItem; // and change for the right button.

self 是 UIViewController。

【讨论】:

【参考方案3】:

您忘记将此按钮添加到工具栏!

NSArray *toolbarItems = [[NSArray alloc] initWithObjects:myToolbarButton,nil]; // you can more buttons here
[aToolbar setItems:toolbarItems animated:NO]; // change to YES if you want to have nice animation
[toolbarItems release];

如果你想在导航栏上添加一个按钮,使用这个:

[self.navigationItem setRightBarButtonItem:myToolbarButton]; // or setLeft...

另外,你应该记得设置myButton的框架:

[myButton setFrame:CGRectMake(0, 0, 30, 32)];

【讨论】:

以上是关于UIButton 未在 iOS 中显示的主要内容,如果未能解决你的问题,请参考以下文章

UILabel 未在 iOS8 中显示子视图

UIButton 未在边框上突出显示

具有目标操作的单元格上的 iOS UIButton,单元格未在 (id)sender 中更新

UIButton 操作未在模态显示的 ViewController 上触发

用户单击时如何禁用 UIButton 的突出显示

UIButton的界面状态