如何用图片替换 Bar Buttons,类似于 Facebook?

Posted

技术标签:

【中文标题】如何用图片替换 Bar Buttons,类似于 Facebook?【英文标题】:How to replace Bar Buttons with images, similar to Facebook? 【发布时间】:2012-06-08 17:28:39 【问题描述】:

我现在正在制作一个应用程序的原型。我以编程方式向导航栏添加了一堆栏按钮:

NSArray *buttonTitles = [[NSArray alloc] initWithObjects:@"Alerts", @"Causes", @"Msgs", @"My Work", @"My Posts", nil];

NSMutableArray *rightBarButtons = [[NSMutableArray alloc] init];
for (int i = 0; i < 5; i++)

    UIButton *rightButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    rightButton.frame = CGRectMake(0, 0, 44, 34);
    [rightButton setTitle:[buttonTitles objectAtIndex:i] forState:UIControlStateNormal];
    [rightButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    rightButton.titleLabel.font = [UIFont systemFontOfSize:10];
    rightItem = [[UIBarButtonItem alloc] initWithCustomView:rightButton];
    [rightBarButtons addObject:rightItem];   

现在,它们看起来真的很丑,尤其是在导航栏上。我想拍摄一些图像(类似于标签栏图像)并将它们放在那里以替换按钮。我该怎么做?

对不起我的愚蠢,我是新手。

谢谢!

【问题讨论】:

rightButton 是您希望更改为图像的对象吗? 【参考方案1】:
 [rightButton setBackgroundImage:@"image.png" forState:UIControlStateNormal];

如果我能正确理解你的问题,就可以解决问题。

for (int i = 0; i < 5; i++)

    NSString* imageName = [NSString stringWithFormat:@"image-%d", i];
    UIButton *rightButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    rightButton.frame = CGRectMake(0, 0, 44, 34);
    [rightButton setTitle:[buttonTitles objectAtIndex:i] forState:UIControlStateNormal];
    [rightButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    rightButton.titleLabel.font = [UIFont systemFontOfSize:10];
    [rightButton setBackgroundImage:imageName forState:UIControlStateNormal];
    rightItem = [[UIBarButtonItem alloc] initWithCustomView:rightButton];
    [rightBarButtons addObject:rightItem];   

好的,这就是我们可以做到的。 我创建了一个 NSString (imageName),为字符串分配了 image-%d 的值,这意味着当 i 为 1 时,它的名称为 image-1,当 i 为 2 时,它的名称为 image-2

然后在[rightButton setBackgroundImage:imageName forState:UIControlStateNormal]; 部分,它只需要我们创建的字符串的名称(imageName)。

这意味着由于您的循环,您的图像应命名为 image-0image-5

如果您需要我澄清任何事情,我很乐意解释更多。

【讨论】:

感谢您的及时回复。我正在尝试为每个按钮设置不同的图像,这就是我遇到问题的地方。我会在 viewDidLoad 或其他东西中使用一些 if () 语句吗?谢谢

以上是关于如何用图片替换 Bar Buttons,类似于 Facebook?的主要内容,如果未能解决你的问题,请参考以下文章

matlab如何用bar函数画带斜线填充的直方图

如何用JS实现简单的图片替换

如何用从一个数据帧到另一个数据帧的值替换字符串

如何用 HttpClient 对象调用或类似方法替换 curl 调用?

如何用EXCEL里的数据对其它文件进行文件名批量的替换修改

使用tohash.select时,如何用字符串替换空值?