将自定义BarButtonItem添加到顶部导航栏

时间:2012-06-28 15:18:06

标签: objective-c uiimage uinavigationbar uibarbuttonitem

在我的故事板中使用界面构建器,我在导航工具栏的左上角放置了一个栏按钮项目,用于切换我的表格视图单元格的编辑视图。我目前的文字类似于“编辑单元格”

我的问题是,如何更改此图片以使用图片?我为状态上的编辑单元格和关闭状态的编辑单元格创建了自己的自定义图像,但是当我在界面构建器中指定图像时,图像在条形按钮项目中被拉伸。我是否需要从代码中以编程方式创建此按钮项以使其使用图像的框架?我如何指定状态?

我觉得应该有一种方法可以在界面构建器中执行此操作,但我尝试以编程方式执行此操作:

UIImage *image = [UIImage imageNamed:@"edit-off.png"];
UIButton *showEditButton = [UIButton buttonWithType:UIButtonTypeCustom];
showEditButton.bounds = CGRectMake( 0, 0, image.size.width, image.size.height );
[showEditButton setImage:image forState:UIControlStateNormal];
UIBarButtonItem *showEditButtonItem = [[UIBarButtonItem alloc] initWithCustomView:showEditButton];

现在如何将showEditButtonItem添加到导航栏的左上角?

enter image description here

实际图片:

enter image description here

2 个答案:

答案 0 :(得分:1)

iOS中的图标预计具有一定的尺寸。您可以在iOS Human Interface Guidelines中找到所需的各种图标大小。

至于将其设置为不同状态的不同图标,我相信您需要在代码中执行此操作。

要为UIBarButtonItem设置图片,您只需设置image属性:

editButton.image = editActiveImage;

editButton.image = editInactiveImage;

答案 1 :(得分:1)

以编程方式添加按钮是这样的:

UIBarButtonItem *editButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"kyyL4.png"] style:UIBarButtonItemStylePlain target:self action:@selector(editObject:)];
self.navigationItem.rightBarButtonItem = editButton;

将此代码放入 ViewController.m 文件的-viewDidLoad:方法中。

(令人遗憾的是,图像也会以这种方式拉伸。)