带有图像和标题的iOS 7 BarButtonItem

Fre*_*ins 14 objective-c uitoolbar uibarbuttonitem ios7

我想知道如何实现这样的目标:

在此输入图像描述

这是一个工具栏,我想保留按钮标题文本,而不必使用图标和文本创建整个图像.如何UIBarButtonItem在保持文本设置的同时在左侧添加图标:

UIBarButtonItem *customBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Button" style:UIBarButtonItemStyleBordered target:nil action:nil];
Run Code Online (Sandbox Code Playgroud)

编辑

这是我用以下代码实现的:

    UIButton *customButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [customButton setImage:[UIImage imageNamed:@"Test"] forState:UIControlStateNormal];
    [customButton setTitle:@"Button" forState:UIControlStateNormal];
    customButton.titleEdgeInsets = UIEdgeInsetsMake(0, 5, 0, 0);
    [customButton sizeToFit];
    UIBarButtonItem *customBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:customButton];
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

这里有两个问题:第一个是尺寸,UIButton第二个是,正如你从gif看到的那样,当我点击按钮内部和当我释放水龙头时按钮没有正确的动画.有任何想法吗?

Gre*_*reg 31

您可以在UIBarButtonItem中嵌入UIButton作为自定义视图.您可以随意创建UIButton,包括图像和文本,使用-setImage:forState:-setTitle:forState:.

UIButton* customButton = [UIButton buttonWithType:UIButtonTypeCustom];
[customButton setImage:[UIImage imageNamed:@"image"] forState:UIControlStateNormal];
[customButton setTitle:@"Button" forState:UIControlStateNormal];
[customButton sizeToFit];
UIBarButtonItem* customBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:customButton];
self.navigationItem.leftBarButtonItem = customBarButtonItem; // or self.navigationItem.rightBarButtonItem
Run Code Online (Sandbox Code Playgroud)

请注意,执行此操作时,您需要将IBAction方法附加到customButton,而不是customBarButtonItem.

有关详细信息,请参阅文档initWithCustomView:.

您也可以通过将UIButton拖动到导航栏上的左侧栏按钮/右侧栏按钮插槽,在界面构建器中完成所有这些操作.