UIBarButtonItem 中的 UIButton 未显示

Posted

技术标签:

【中文标题】UIBarButtonItem 中的 UIButton 未显示【英文标题】:UIButton in UIBarButtonItem not showing up 【发布时间】:2010-11-04 15:05:22 【问题描述】:

我的视图中有以下内容确实加载到我的表视图控制器上:

UIButton *change_view = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[change_view setTitle:@"List" forState:UIControlStateNormal];
[change_view addTarget:self action:@selector(toggleView:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithCustomView: change_view];    
self.navigationItem.rightBarButtonItem = button;    

当我运行程序时,它没有显示任何标题或圆角矩形按钮。但是,如果我将类型更改为 UIButtonTypeInfoLight,它会显示出来……那是什么问题?

【问题讨论】:

【参考方案1】:

我更喜欢下面的方式来设置按钮的边界。

[button setTitle:@"Title" forState:UIControlStateNormal];
[button sizeToFit];

【讨论】:

【参考方案2】:

尝试为您的change_view 设置适当的框架。

当您使用UIButtonTypeInfoLight 类型按钮时,会使用一些内置尺寸(可能取决于用于它的图标),使用UIButtonTypeRoundedRect 类型的默认框架必须是CGRectZero rect。

【讨论】:

如何设置按钮的边框? change_view.frame = CGRectMake(0,0,width,height),具有适当的宽度和高度。如果您对标题使用不同的字符串(例如本地化),您可能需要动态计算宽度...

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

导航栏中的 UIBarButtonItem 设置垂直位置偏移

导航栏中的 UIBarButtonItem 以编程方式?

UIBarButtonItem 中的 UISlider 影响动画行为

弹出窗口在 iOS 中的 UIBarButtonItem 操作上崩溃

UIBarButtonItem 中的 UIButton 未显示

Swift-5.0 中的 UIBarButtonItem 颜色设置