在 IB 中,我可以将 UIBarButtonItem 的标识符设置为“播放”,这会添加播放按钮的图像(指向右侧的三角形)。
有没有办法以编程方式更改此图像?我想在按下播放按钮时将其更改为“暂停”。
我知道您可以使用标识符初始化 UIBarButtonItem,但我还没有找到在初始化后更改它的方法。这甚至可能吗?
我唯一能想到的就是删除旧按钮并在其位置初始化一个新按钮,但这似乎效率不高。
有什么想法吗?
在 IB 中,我可以将 UIBarButtonItem 的标识符设置为“播放”,这会添加播放按钮的图像(指向右侧的三角形)。
有没有办法以编程方式更改此图像?我想在按下播放按钮时将其更改为“暂停”。
我知道您可以使用标识符初始化 UIBarButtonItem,但我还没有找到在初始化后更改它的方法。这甚至可能吗?
我唯一能想到的就是删除旧按钮并在其位置初始化一个新按钮,但这似乎效率不高。
有什么想法吗?
好的,我已经用谷歌搜索了这个问题,并遇到了来自 Apple 的示例代码 ,他们在其中做同样的事情(在工具栏按钮上切换播放/暂停按钮图形)。但是他们没有使用内置的播放和暂停标识符,而是使用UIBarButtonItem
自定义UIButton
和切换自定义图像。
因此,如果 Apple 在 UIButton 上创建和切换自定义图像而不是内置的播放和暂停UIBarButtonItem
按钮时遇到麻烦,那么我认为可以肯定地说没有办法以编程方式更改UIBarButtonItem
.
这是他们(Apple)在按下按钮时切换图像的操作:
// Call this when the button you want to toggle is pressed:
[playButton setImage:((p.playing == YES) ? pauseBtnBG : playBtnBG) forState:UIControlStateNormal];
将 p.playing 替换为您想要保持按钮状态的任何 BOOL。 playButton
是UIButton
工具栏中的自定义。 pauseBtnBG
并且playBtnBG
是要切换的图像。
这似乎工作得很好:
UIBarButtonItem *oldButton = [myToolBar.items objectAtIndex:1];
[myToolBar setItems:[NSArray arrayWithObjects:[myToolBar objectAtIndex:0], [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemStop target:self action:@selector(tapStopRefreshButton:)],nil] animated:NO];
[oldButton release];
在这个例子中,我有一个 UIWebView 的工具栏,当有人单击重新加载时,我希望它更改为停止。工具栏只有一个灵活的空间和一个按钮 - 右对齐按钮 - 所以我抓住了对旧按钮的引用,用与旧按钮相同的选择器制作了一个新按钮,重置标签栏上的按钮,然后松开原来的按钮。
不是最漂亮的,但您可以使用所有标准按钮而无需覆盖按钮类。
2 个堆叠的工具栏呢?然后,您可以在顶部有一些系统按钮,在底部有其他按钮。如果按下播放按钮,则只需隐藏顶部工具栏。