Cko*_*eny 17 cocoa uibarbuttonitem ios
在点击'record'BarButtonItem之后,我想以编程方式突出显示它,直到录制结束.iOS的突出显示图形非常好,因此我想保留或设置该状态.
到目前为止,我发现'setSelected'和'setHighlighted',但这些不适用于UIBarButtonItem.关于如何解决这个问题的任何建议?科恩,提前谢谢你.
setSelected并且setHighlighted在UIControls上工作正常,但不是UIBarButtonItems(不是UIControls).
我建议使用UIBarButtonItem - (void)setBackgroundImage:(UIImage *)backgroundImage forState:(UIControlState)state barMetrics:(UIBarMetrics)barMetrics(文档链接)方法将背景图像更改为模仿突出显示的内容.
您还可以在项目上设置自定义UIView,该项目也模仿突出显示(请参阅customView属性).
如果添加了UIBarButtonItem一个UIButton支持它,你可以索要CustomView.

UIButton *button = (UIButton *)[self.barButtonItem customView];
[button setSelected:YES];
Run Code Online (Sandbox Code Playgroud)
如果您绝对想要使用默认图形,则可以将按钮项初始化为
UIBarButtonItem *toggleButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"MyButton"
style:UIBarButtonItemStyleBordered
target:someObject
action:@selector(doSomething:)];
Run Code Online (Sandbox Code Playgroud)
并用它切换
toggleButtonItem.style = (toggleButtonItem.style == UIBarButtonItemStyleBordered)
? UIBarButtonItemStyleDone : UIBarButtonItemStyleBordered;
Run Code Online (Sandbox Code Playgroud)
您还需要使用style属性来读取当前状态.
BOOL isSelected = (toggleButtonItem.style == UIBarButtonItemStyleDone)
Run Code Online (Sandbox Code Playgroud)