OGeek|极客世界-中国程序员成长平台

标题: ios - UIBarbuttonItem 在 ios 7 上没有标题 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 15:11
标题: ios - UIBarbuttonItem 在 ios 7 上没有标题

我有一个应用程序,我正在迁移到 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)

enter image description here

编辑 2 一张来自 Reveal 的图片,似乎文字不见了,frame/bounds 为 0.wtf )

enter image description here



Best Answer-推荐答案


最终为 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/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://ogeek.cn/) Powered by Discuz! X3.4