Objective c 如何在导航栏按钮项中添加自定义图像?
这是我的应用程序的代码,我需要在此按钮上添加图像吗 请帮助我。请尝试以下代码:Objective c 如何在导航栏按钮项中添加自定义图像?,objective-c,xcode,ios4,iphone,Objective C,Xcode,Ios4,Iphone,这是我的应用程序的代码,我需要在此按钮上添加图像吗 请帮助我。请尝试以下代码: UIBarButtonItem *doneitem=[[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(donePressed:)]autorelease]; self.navigationItem.rightBarButtonItem=done
UIBarButtonItem *doneitem=[[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(donePressed:)]autorelease];
self.navigationItem.rightBarButtonItem=doneitem;
请尝试以下代码:
UIButton *urButton = [UIButton buttonWithType:UIButtonTypeCustom];
urButton.frame = urRequiredFrame;
[urButton setImage:urImage forState:UIControlStateNormal];
[urButton addTarget:self action:@selector(donePressed:)
forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *doneButton =[[UIBarButtonItem alloc] initWithCustomView:urButton];
self.navigationItem.rightBarButtonItem=doneButton;
一个简单的方法:
UIBarButtonItem *_btn=[[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"XXXXXXX.png"]
style:UIBarButtonItemStylePlain
target:self
action:@selector(yourMethod)];
self.navigationItem.rightBarButtonItem=_btn;
然后,如果您需要不止一个按钮,您可以将另一个
UIBarButtonItem
添加到initWithObjects
,以防任何人需要Swift代码获得公认答案:
UIImage* customImg = [UIImage imageNamed:@"custom-img.png"];
UIBarButtonItem *_customButton = [[UIBarButtonItem alloc] initWithImage:customImg style:UIBarButtonItemStyleDone target:nil action:nil];
self.navigationItem.rightBarButtonItems = [[NSArray alloc] initWithObjects:_customButton, nil];
p.S.Gurpret Singh answer仅适用于透明PNG,我还必须设置按钮的颜色,而不是clearColor。执行此操作。更简单。
let infoImage = UIImage(named: "my-icon-32.png")
let imgWidth = infoImage?.size.width
let imgHeight = infoImage?.size.height
let button:UIButton = UIButton(frame: CGRect(x: 0,y: 0,width: imgWidth!, height: imgHeight!))
button.setBackgroundImage(infoImage, forState: .Normal)
button.addTarget(self, action: Selector("openInfo"), forControlEvents: UIControlEvents.TouchUpInside)
self.navigationItem.rightBarButtonItem = UIBarButtonItem(customView: button)
在Swift中 使用渲染模式(UIImage.RenderingMode.alwaysOriginal)的
的其他解决方案方法如下:
SEL selector = self.navigationItem.rightBarButtonItem.action;
id target = self.navigationItem.rightBarButtonItem.target;
UIBarButtonItem *_btn=[[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"icon_close.png"]
style:UIBarButtonItemStylePlain
target:target
action:selector];
self.navigationItem.rightBarButtonItem = _btn;
这是对我有用的。我发现30x30是导航栏按钮的合适尺寸。UIImage会自动缩放到按钮大小
let img = UIImage(named: "picture")!.withRenderingMode(UIImage.RenderingMode.alwaysOriginal)
let leftBarButtonItem = UIBarButtonItem(image: img, style: UIBarButtonItem.Style.plain, target: self, action: nil)
self.navigationItem.leftBarButtonItem = leftBarButtonItem
它工作得很好,但当我点击按钮时,应用程序崩溃,模拟器突然退出。我如何才能做到这一点,并且不丢失故事板中按钮定义的Segue操作?Renato:给Segue一个名称并调用[self-performsguewithidentifier:@“yourSegueName”发送者:self]代码>在按钮的目标操作中。urRequiredFrame是您希望按钮位于的帧,urImage是您希望的图像,因为按钮的图像必须测量按钮是否与@onmyway133一致。答案很简单,很有帮助。没错,这让事情变得简单多了。我这样做了,我的图像显示的是一个平坦的蓝色矩形,而不是我从项目中选择的图像。有什么想法吗?为了回答我自己的评论,我没有在.png图像文件中正确设置alpha,我必须用GIMP修改它,将白色设置为alpha。如何以这种方式为选定/未选定状态提供两个单独的图像
let infoImage = UIImage(named: "my-icon-32.png")
let imgWidth = infoImage?.size.width
let imgHeight = infoImage?.size.height
let button:UIButton = UIButton(frame: CGRect(x: 0,y: 0,width: imgWidth!, height: imgHeight!))
button.setBackgroundImage(infoImage, forState: .Normal)
button.addTarget(self, action: Selector("openInfo"), forControlEvents: UIControlEvents.TouchUpInside)
self.navigationItem.rightBarButtonItem = UIBarButtonItem(customView: button)
SEL selector = self.navigationItem.rightBarButtonItem.action;
id target = self.navigationItem.rightBarButtonItem.target;
UIBarButtonItem *_btn=[[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"icon_close.png"]
style:UIBarButtonItemStylePlain
target:target
action:selector];
self.navigationItem.rightBarButtonItem = _btn;
let img = UIImage(named: "picture")!.withRenderingMode(UIImage.RenderingMode.alwaysOriginal)
let leftBarButtonItem = UIBarButtonItem(image: img, style: UIBarButtonItem.Style.plain, target: self, action: nil)
self.navigationItem.leftBarButtonItem = leftBarButtonItem
UIImage *image = [UIImage imageNamed:@"XXXXXXXXXX"];
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];
[button setBackgroundImage:image forState:UIControlStateNormal];
[button addTarget:self action:@selector(someAction) forControlEvents:UIControlEventTouchUpInside];
button.adjustsImageWhenHighlighted = NO;
UIBarButtonItem *rightButton =[[UIBarButtonItem alloc] initWithCustomView:button];
self.navigationItem.rightBarButtonItem = rightButton;
let sliderImageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 40, height: 30))
sliderImageView.contentMode = .ScaleAspectFit
sliderImageView.image = UIImage(named: "sliderMenu")
OR
var sliderImage = UIImage(named: "sliderMenu")
navigationItem.leftBarButtonItem?.image = sliderImage