我认为这将是一个愚蠢的问题,但我似乎无法找到答案。我有一些简单的代码行可以在导航栏中添加一个按钮:
UIBarButtonItem *cancelButton=[[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"button-cancel.png"] style:UIBarButtonItemStylePlain target:self action:@selector(cancelPressed:)];
UINavigationItem *item = [[UINavigationItem alloc] init];
item.leftBarButtonItem = cancelButton;
item.hidesBackButton = YES;
[self.navigationBar pushNavigationItem:item animated:NO];
此按钮工作正常,但它看起来像这样:
有什么想法吗?
答案 0 :(得分:1)
您可能希望使用自定义视图创建条形按钮项,其中自定义视图为UIButton
:
UIImage *cancelImage = [UIImage imageNamed:@"button-cancel"];
UIButton *cancelButton = [UIButton buttonWithType:UIButtonTypeCustom];
cancelButton.frame = (CGRect){CGPointZero, cancelImage.size);
[cancelButton setImage:cancelImage forState:UIControlStateNormal];
UIBarButtonItem *cancelBarButton = [[UIBarButtonItem alloc] initWithCustomView:cancelButton];
答案 1 :(得分:0)
根据button-cancel.png的大小设置按钮(cancelButton)大小。
stopButton.frame = CGRectMake();
答案 2 :(得分:0)
而是使用您的图片创建自定义类型UIButton。将UI按钮的目标和选择器设置为您希望条形按钮项目执行的操作。然后按如下方式初始化条形按钮项目:
UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button];
使用所需图像的按钮是您的UIButton。
答案 3 :(得分:0)
UIBarButtonItem/initWithImage:
通常用于制作标志性按钮 - 而不是带有文字的按钮。
如果您只想更改常见文字UIBarButtonItem
的外观,则只需设置条形按钮项的背景图片即可。这样,您就不必拥有包含按钮文本的每个按钮的图像。
您还可以通过调用UIBarButtonItem
外观代理上的setBackgroundImage来设置此应用范围。
最后,请注意,您可能需要创建一个可调整大小的图像以传递给setBackgroundImage。这将使您的单个图像适应任何按钮大小。请参阅UIImage/resizeableImageWithCapInsets:resizingMode:
(iOS6)或UIImage/stretchableImageWithLeftCapWidth:topCapHeight:
(iOS6之前)
你当然可以做@Wain建议但有缺点。首先,您的按下处理程序将不再发送UIBarButtonItem作为“发送者”。在你有一个突然需要确定发件人是UIBarButtonItem还是UIButton的公共处理程序,或者你想要针对这个BarButtonItem呈现UIPopoverController(但你只有UIButton引用......)之前,这似乎不会太多。