Iphone 将图像添加到UIToolbar的UIBarButtonim
我正在尝试向UIBarButtonim添加一个必须在UIToolbar中使用的图像 我已经成功地读取了图像,甚至用UIImageView显示了它,但是当我将其添加到UIBarButtonim中,然后将该项添加到UIToolbar中时,工具栏只会替换一个“空白”空间,即我试图加载的图像的大小和形状 这就是我正在尝试的Iphone 将图像添加到UIToolbar的UIBarButtonim,iphone,uibarbuttonitem,uitoolbar,Iphone,Uibarbuttonitem,Uitoolbar,我正在尝试向UIBarButtonim添加一个必须在UIToolbar中使用的图像 我已经成功地读取了图像,甚至用UIImageView显示了它,但是当我将其添加到UIBarButtonim中,然后将该项添加到UIToolbar中时,工具栏只会替换一个“空白”空间,即我试图加载的图像的大小和形状 这就是我正在尝试的 UIImage *image = [UIImage imageNamed:@"6.png"]; //This is the UIImageView that I was using
UIImage *image = [UIImage imageNamed:@"6.png"];
//This is the UIImageView that I was using to display the image so that i know that it is being read from the path specified.
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
imageView.frame = CGRectMake(0, 50, image.size.width, image.size.height);
[self.view addSubview:imageView];
UIButton *button1 = [UIButton buttonWithType:UIButtonTypeCustom];
[button1 setImage:image forState:UIControlStateNormal];
//This is the first way that I was trying to accomplish the task but i just get a blank white space
//This is the Second way but with the same blank white result.
UIBarButtonItem *systemItem1 = [[UIBarButtonItem alloc] initWithCustomView:button2];
NSArray *items = [NSArray arrayWithObjects: systemItem1, nil];
//Adding array of buttons to toolbar
[toolBar setItems:items animated:NO];
//Adding the Toolbar to the view.
[self.view addSubview:toolBar];
非常感谢你的帮助
谢谢大家!
Shumais Ul Haq除了您通常期望的UIKit内容之外,您可能需要明确地为按钮设置一个框架。也许这是你的问题 这是我为一个定制样式的后退按钮所写的,作为
uibarbuttoneim
的一个类别(但您可以从中获取所需的片段)
请注意,这是用于导航栏,而不是工具栏,但我认为机制是相同的,因为它也是一个uibarbuttoneim
。对于UIToolbar
,您只需在编译时使用IB即可
#define TEXT_MARGIN 8.0f
#define ARROW_MARGIN 12.0f
#define FONT_SIZE 13.0f
#define IMAGE_HEIGHT 31.0f
+(UIBarButtonItem*)arrowLeftWithText:(NSString*)txt target:(id)target action:(SEL)selector
{
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
UIImage *img = [[UIImage imageNamed:@"arrow_left.png"]
stretchableImageWithLeftCapWidth:15 topCapHeight:0];
[btn addTarget:target action:selector forControlEvents:UIControlEventTouchDown];
[btn setContentHorizontalAlignment:UIControlContentHorizontalAlignmentRight];
[btn setContentEdgeInsets:UIEdgeInsetsMake(0.0f,0.0f,0.0f,TEXT_MARGIN)];
[btn.titleLabel setFont:[UIFont fontWithName:@"Helvetica-Bold" size:FONT_SIZE]];
[btn.titleLabel setShadowOffset:CGSizeMake(0.0f,-1.0f)];
/**** this is the magic line ****/
btn.frame = CGRectMake(0.0f,0.0f,
[txt sizeWithFont:[btn.titleLabel font]].width+ARROW_MARGIN+TEXT_MARGIN,
IMAGE_HEIGHT);
[btn styleBarButtonForState:UIControlStateNormal withImage:img andText:txt];
[btn styleBarButtonForState:UIControlStateDisabled withImage:img andText:txt];
[btn styleBarButtonForState:UIControlStateHighlighted withImage:img andText:txt];
[btn styleBarButtonForState:UIControlStateSelected withImage:img andText:txt];
return [[[UIBarButtonItem alloc] initWithCustomView:btn] autorelease];
}
用法:
[UIBarButtonItem arrowLeftWithText:@"Back" target:self action:@selector(dismiss)];
谢谢MVD!!!是的,是框架!!我只是简单地添加了这行button2.frame=CGRectMake(0,0,image.size.width,image.size.height);我花了很长时间才让它工作。我想我永远不会忘记按钮框的关系!!再次感谢!