2010-05-07 38 views
21

UIBarButtonItems的水平定位没有问题,我可以简单地用固定/灵活的空间项目填充空间。但是,我似乎无法垂直调整工具栏项目。 UIToolbar没有对齐属性,并且UIBarButtonItem无法设置其框架。如何调整由UIToolbar实例包含的UIBarButtonItem的框架或垂直对齐?

我需要这样做是因为我们使用了使用initWithImage创建的自定义图标和使用initWithBarButtonSystemItem创建的标准图标的组合。自定义图标没有正确居中(它们向上偏移,相对于正确居中的系统图标),所以工具栏看起来很尴尬。

+2

我推荐你1)使用自定义的东西,而不是一个工具栏;或2)修复图像,因为它们将更容易适当调整。 – 2010-05-07 03:34:09

+0

1不适合我。我无法做出视觉设计决定。我无法确定UI的外观,按钮的效果以及它们的位置。 2如果可能,我宁愿避免,因为它意味着将工作交给视觉设计师。重复传递图像来调整它,然后通过反复试验来检查结果是很乏味的。也没有任何保证能够解决这个问题......即使我们调整了图标大小,UIKit仍然可能会改变它。 其他建议? – akaii 2010-05-07 04:00:01

+1

关于如何对文本进行操作的任何想法? imageinsets解决方案不适用于文本。 – easythrees 2013-10-09 23:48:02

回答

1

似乎没有任何简单,干净的做法,所以我去了一个丑陋但功能强大的黑客:嵌套。我将另一个包含按钮的UIToolbar插入到UIView中,该UIView使用initWithCustomView在原始工具栏上设置为UIBarButtonItem。第二个UIToolbar可以在UIView中自由移动,而实际的图标保留了UIBarButtonItem的所有属性。

呃。

3

imageInsets属性的UIBarItem?

34

是的,imageInsets适合我!

float topInset = 4.0f; 
myUIBarButton.imageInsets = UIEdgeInsetsMake(topInset, 0.0f, -topInset, 0.0f); 

将图像向下移动4个像素。

避免此:

float topInset = 4.0f; 
myUIBarButton.imageInsets = UIEdgeInsetsMake(topInset, 0.0f, 0.0f, 0.0f); 

移动图像的4个像素向下(BUT重新缩放图像高度,以便它看起来压缩)。

+0

很高兴看到我不是唯一一个有此问题的人。虽然,“topInset = 2.0f”为我工作。 – 2011-04-18 05:07:32

+0

谢谢你真的保存了我的时间 – 2014-02-12 15:25:03