我目前正在为
IOS申请,但我无法更改图片……真可惜……
情况是这样的:
我有一个包含我的项目的工具栏,其中一个项目是根据标识符“Play”创建的播放按钮.所以我有没有问题的播放按钮.现在我只想在点击项目然后再次切换等时将其更改为暂停图像.
所以我喜欢我的.h项目给我:
@property (weak,nonatomic) IBOutlet UIBarButtonItem *play;
我尝试了很多我在这个网站上找到的答案,但没有一个能对我的案子起作用:/
我尝试的最后一个是这样的:
UIButton *button1=[UIButton buttonWithType:UIButtonTypeCustom]; [button1 setFrame:CGRectMake(10.0,2.0,45.0,40.0)]; [button1 addTarget:self action:@selector(showLeft:) forControlEvents:UIControlEventTouchUpInside]; [button1 setImage:[UIImage imageNamed:@"pause.png"] forState:UIControlStateNormal]; UIBarButtonItem *button = [[UIBarButtonItem alloc]initWithCustomView:button1]; self.play = button;
我也尝试过:
self.play.customView = button1;
但是它们都没有真正起作用,我可以通过这样做来获得图像
self.view = button1;
但是在屏幕中间只有图片(所以UIImage的创建是可以的)所以….
(如果你也可以告诉我如何使用标识符返回游戏,那么非常感谢非常有用)
谢谢你的帮助.
解决方法
我认为这应该有效.
-(IBAction)buttonClick:(UIBarButtonItem *)sender { if ([[sender backgroundImageForState:UIControlStateNormal barMetrics:UIBarMetricsDefault] isEqual:[UIImage imageNamed:@"Play.jpg"]]) { [sender setBackgroundImage:[UIImage imageNamed:@"Pause.jpg"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; }else{ [sender setBackgroundImage:[UIImage imageNamed:@"Play.jpg"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; } }
当然,您必须最初(在viewDidLoad中)将背景图像设置为“Play”图像才能使其生效.
编辑后:
如果你想使用系统播放和暂停按钮,据我所知,你必须更换按钮.我认为没有办法改变图像.所以,我这样做了.该按钮在IB中设置了插座playPauseButton和动作playClick.我还为工具栏(toolBar)做了一个出口.
-(IBAction)playClick:(UIBarButtonItem *)sender { UIBarButtonItem *pause = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemPause target:self action:@selector(pauseClick:)]; NSMutableArray *tbItems = [self.toolBar.items mutableCopy]; [tbItems removeObject:self.playPauseButton]; self.playPauseButton = pause; [tbItems addObject:pause]; self.toolBar.items = tbItems; } -(void)pauseClick:(UIBarButtonItem *)sender { UIBarButtonItem *play = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemPlay target:self action:@selector(playClick:)]; NSMutableArray *tbItems = [self.toolBar.items mutableCopy]; [tbItems removeObject:self.playPauseButton]; self.playPauseButton = play; [tbItems addObject:play]; self.toolBar.items = tbItems; }