ios - 自定义 "Pressed"UIBarButtonItem 背景

标签 ios objective-c uiimage uibarbuttonitem

我正在尝试为我的 UIBarButtonItem 设置自定义按下图像,但似乎没有任何效果。根据我的理解,下面的代码应该可以工作,但是尽管将图像设置为突出显示状态,但按钮在按下时看起来完全一样。

有什么想法吗?

UIImage *barButtonBackground = [[UIImage imageNamed:ANBarButtonItemBackgroundImageName] resizableImageWithCapInsets:UIEdgeInsetsMake(5.0f,5.0f, 5.0f, 5.0f)];
UIImage *barButtonPressedBackground = [[UIImage imageNamed:ANBarButtonPressedImageName] resizableImageWithCapInsets:UIEdgeInsetsMake(5.0f,5.0f, 5.0f, 5.0f)];

[self.navigationItem.leftBarButtonItem setBackgroundImage:barButtonBackground forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[self.navigationItem.rightBarButtonItem setBackgroundImage:barButtonBackground forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

[self.navigationItem.leftBarButtonItem setBackgroundImage:barButtonPressedBackground forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault];
[self.navigationItem.rightBarButtonItem setBackgroundImage:barButtonPressedBackground forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault];

最佳答案

我认为您应该为匹配您的配色方案的不同控件状态创建一个带有背景图像自定义UIButton,然后使用这个UIButton 作为自定义 UIBarButtonItem 的 View 。

UIButton *customButton = [UIButton buttonWithType:...];

[customButton setBackgroundImage:barButtonBackground  forState:UIControlStateNormal];
[customButton setBackgroundImage:barButtonPressedBackground  forState:UIControlStateSelected];

UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView: customButton];

如果你想要一些其他引用,那么你可以通过这个漂亮的链接:Using Appearance Proxy to Style Apps

关于ios - 自定义 "Pressed"UIBarButtonItem 背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14250419/

相关文章:

IOS分享扩展如何支持苹果新闻

ios - 以编程方式设置背景图像以查看 : All Buttons are disappeared

ios - 如何以编程方式更改搜索栏中选择的范围?

ios - mask 周围的 UIImage 边框

ios - 为 UIImage 添加白色边框

ios - UISearchController - 不能很好地使用 subview Controller

iOS - 设置两个 subview 约束的更好方法

ios - 如何在 Objective-C 和 Swift 中等待

ios - 在一组异步 Web 服务调用后使用信号量 token 运行代码时出错

swift - 从 UIImage 上手绘线创建新的 UIImage - Swift