0

我在尝试使用图像而不是 UIBarButtonItems 的标题时遇到了麻烦。我的理解是,为 UIBarButtonItem 设置图像会自动将图像缩放为 UIBarButtonItem 的正确大小。这是有道理的,因为似乎没有任何方法可以调整图像的大小(您无法设置 imageView,或添加子视图或任何东西)。但是,当我使用两个完全相同尺寸(24x24)的不同图像时,我会得到不同的结果:

myAddButton = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"plus.png"] style:UIBarButtonSystemItemAdd target:self action:@selector(addButtonTapped)];
self.navigationItem.rightBarButtonItem = myAddButton;

myLeftButton = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"gear.png"] style:UIBarButtonSystemItemAdd target:self action:@selector(settingsButtonTapped)];
self.navigationItem.leftBarButtonItem = myLeftButton;

导致以下情况:

在此处输入图像描述

同样,gear.png 和 plus.png 的大小相同,均为 24x24。我已经在 Photoshop 中确认了这一点。

现在,如果我采用完全相同的代码行,只需将 gear 替换为 plus:

myAddButton = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"plus.png"] style:UIBarButtonSystemItemAdd target:self action:@selector(addButtonTapped)];
self.navigationItem.rightBarButtonItem = myAddButton;

myLeftButton = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"plus.png"] style:UIBarButtonSystemItemAdd target:self action:@selector(settingsButtonTapped)];
self.navigationItem.leftBarButtonItem = myLeftButton;

我明白了:

在此处输入图像描述

颜色的差异是由于一个被启用而另一个没有。

我只想让它们成为 UIButtons,这样我就可以使用 imageViews 并自己手动设置它,除了我喜欢使用 UIBarButtonItem 给我的背景,我不想在 Photoshop 中重新创建它。

关于这里发生了什么以及如何解决它的任何想法?

提前致谢。

编辑:

事实证明,这个问题是因为我需要清除我的构建并从模拟器中删除应用程序,因为它是从我之前使用的 48x48 图像中提取的。

4

4 回答 4

2

确保您的项目中有正确的图像。而且,是的,有时尝试清理您的项目。从设备/模拟器中删除应用程序也很有帮助。

于 2013-02-15T08:46:22.060 回答
1

您为用于创建按钮的方法传递了不正确的样式:

这里:

[[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"plus.png"] style:UIBarButtonSystemItemAdd target:self action:@selector(settingsButtonTapped)];

您正在使用initWithImage:style:target:action,但您分配的样式值UIBarButtonSystemItemAdd不是允许的值之一。该方法的文档说它必须UIBarButtonItemStyle是定义为的其中之一。尝试使用其中一种来代替,看看你是否能得到你想要的效果。

typedef enum {
   UIBarButtonItemStylePlain,
   UIBarButtonItemStyleBordered,
   UIBarButtonItemStyleDone,
} UIBarButtonItemStyle;
于 2013-02-15T08:44:59.623 回答
0

这是您可以尝试的

UIButton *leftButton = [ UIButton buttonWithType:UIButtonTypeCustom];    
        [leftButton setFrame:CGRectMake(0,0,44,44)]; // set the frame according to the image size
        [leftButton setBackgroundImage:[UIImage imageNamed:@"plus.png"] forState:UIControlStateNormal];
        [leftButton addTarget:self action:@selector(myActionMethod:)    forControlEvents:UIControlEventTouchUpInside];

        myLeftButton = [[UIBarButtonItem alloc]initWithCustomView:leftButton];
      self.navigationItem.leftBarButtonItem = myLeftButton;
于 2013-02-15T08:45:27.707 回答
0
self.navigationItem.leftBarButtonItem =[[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addButtonTapped)]autorelease];
于 2013-02-15T08:46:23.927 回答