iOS:UIBarButton 正确大小

Posted

技术标签:

【中文标题】iOS:UIBarButton 正确大小【英文标题】:iOS: UIBarButton Proper Size 【发布时间】:2018-01-24 15:31:37 【问题描述】:

在 UIToolbar 上的 ios 应用程序中,我添加了带有图像的“完成”自定义按钮。

UIBarButtonItem *btnNextDoneDisable;
UIToolbar *navigateQuestionBar;

//*to add button

UIImage *img_done = [UIImage imageNamed:DONE_RED_BTN_PNG(appDelegate.isIphone)];
        btn = [UIButton buttonWithType:UIButtonTypeCustom];
        [btn setImage:img_done forState:UIControlStateNormal];
        btn.frame = CGRectMake(0.0, 0.0, img_done.size.width, img_done.size.height);
        [btn addTarget:self action:@selector(doneClicked) forControlEvents:UIControlEventTouchUpInside];
        btnNextDoneDisable = [[UIBarButtonItem alloc] initWithCustomView:btn];

 [arrButtons addObject:btnNextDoneDisable];

navigateQuestionBar.items = arrButtons;

完成按钮图像大小为:

80 × 30

156 × 57

但这在 iPad Pro(11.0) 上看起来很麻烦,

按钮的合适尺寸是多少?

【问题讨论】:

【参考方案1】:

根据人机界面指南,导航栏和工具栏图标的正确大小应该是:

+-------------------------------+-------------------------------+
|         Target sizes          |         Maximum sizes         |
+-------------------------------+-------------------------------+
| 72px × 72px (24pt × 24pt @3x) | 84px × 84px (28pt × 28pt @3x) |
| 48px × 48px (24pt × 24pt @2x) | 56px × 56px (28pt × 28pt @2x) |
+-------------------------------+-------------------------------+

这是对 Apple 指南的参考:https://developer.apple.com/ios/human-interface-guidelines/icons-and-images/custom-icons/

【讨论】:

很好的参考,但不是指定问题的答案【参考方案2】:

UIBarButtonItems 有一个固定的尺寸并且忽略任何其他尺寸。

另外,添加到 UINavigationBar 或 UIToolbar 的项目由苹果放置。


=> 您不能设置 UIBarButtonItem 的帧大小或帧原点

【讨论】:

【参考方案3】:

问题在于,在 iOS 11 中,您必须使用约束设置 UIBarButtonItem 的 customView 的大小(以便“从内到外”调整项目的大小)。你没有那样做;您的按钮有一个 frame,但这不是调整它大小的正确方法。给按钮高度和宽度约束,以便运行时知道如何调整条形按钮项的大小。

【讨论】:

以上是关于iOS:UIBarButton 正确大小的主要内容,如果未能解决你的问题,请参考以下文章

如何减少 UINavigationBar IOS 7 中 UIBarButton 项之间的填充?

iOS 在整个导航控制器中显示相同的 UIBarButton

在 IOS 6.0 中:底部工具栏中的 UIBarButton 在呈现和关闭模式视图控制器后消失

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

UIbarbutton 蓝色而不是背景图片

CSS中的正确居中按钮[重复]