我有一个应用程序,我正在迁移到 iOS 7。
但是,UIBarbuttonItem 没有标题,但工作正常。
这是我的代码:
UIBarButtonItem * uibbShare = [[[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed"sharewhite.png"] style:UIBarButtonItemStylePlain target:self actionselector(sharePressed] autorelease];
// uibbShare.width = 56.0; // uncommenting this doesn't change anything
uibbShare.title = @"Share";
然后我将其中一些添加到工具栏中,并在它们之间添加一些灵活的空间项。
...
[items addObject:flex2];
[items addObject:uibbShare];
...
[self.toolbar setItems:items animated:NO];
在 iOS 7 上它们根本没有标题,在 iOS6 上一切正常。你不能再在 ios7 中创建这样的 barbuttons 了吗?
更新开发论坛上的同样问题:
UIBarButtonItem can't have both title and image?
What happened to the text under toolbar icons?
编辑7比6)
编辑 2 一张来自 Reveal 的图片,似乎文字不见了,frame/bounds 为 0.wtf )
Best Answer-推荐答案 strong>
最终为 UIBarButtonItems 创建了自定义 View 。这不是很好,但它会暂时起作用。我只是将旧的 UIBarButtonItems 传递给该函数,该函数返回一个新的。
注意:如果有标题,我只是将按钮的图像上移并在下面添加一个简单的标签,实际上并没有弄乱 titleEdgeInsets 和 centering 。另外,我将宽度设置为默认的 56。
-(UIBarButtonItem *)convertToButtonUIBarButtonItem *)original
{
if ( SYSTEM_VERSION_LESS_THAN(@"7.0"))
return original;
CGFloat textFieldHeight = 13.f;
UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(0, 0, 56, self.toolbar.frame.size.height);
button.showsTouchWhenHighlighted = YES;
[button setImageriginal.image forState:UIControlStateNormal];
[button addTargetriginal.target actionriginal.action forControlEvents:UIControlEventTouchUpInside];
button.tag = original.tag;
UIView * wr = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 56, self.toolbar.frame.size.height)] autorelease];
[wr addSubview:button];
wr.backgroundColor = [UIColor clearColor];
if (original.title != nil)
{
button.imageEdgeInsets = UIEdgeInsetsMake(-7, 0, 0, 0);
UILabel * l = [[[UILabel alloc] initWithFrame:CGRectMake(0, self.toolbar.frame.size.height - textFieldHeight, 56, textFieldHeight)] autorelease];
l.font = [UIFont systemFontOfSize:11.f];
l.backgroundColor = [UIColor clearColor];
l.textColor = [UIColor lightGrayColor];
l.textAlignment = UITextAlignmentCenter;
l.text = original.title;
[wr addSubview:l];
}
UIBarButtonItem * theNew = [[[UIBarButtonItem alloc] initWithCustomView:wr] autorelease];
theNew.tag = original.tag;
theNew.width = 56;
return theNew;
}
关于ios - UIBarbuttonItem 在 ios 7 上没有标题,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/19134598/
|