无法更改 UIButton 外观
Posted
技术标签:
【中文标题】无法更改 UIButton 外观【英文标题】:Can't change UIButton appearance 【发布时间】:2013-05-30 10:20:14 【问题描述】:我正在尝试更改我的应用中所有 UIButton 的外观。这是我用来执行此操作的代码,当它被调用时,什么也没有发生。我知道该方法本身被调用,因为 NSLog 正在打印出文件名字符串。所以一定是我做错了什么。
NSString *filename = @"image.png";
NSLog(filename);
UIImage *customBackground = [[UIImage imageNamed:filename] resizableImageWithCapInsets:UIEdgeInsetsMake(0,0,0,0)];
[[UIButton appearance] setBackgroundImage:customBackground forState:UIControlStateNormal];
【问题讨论】:
这应该有助于 [[UIButton 外观] setBackButtonBackgroundImage:yourImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 你的代码没问题!尝试找到另一个问题或提供更多代码 【参考方案1】:您可以更改按钮颜色或图像,从您可以使用的完整视图:-
for (UIView *view in self.view.subviews)
if([view isKindOfClass:[UIButton class]])
UIButton *btn = (UIButton*)view;
[btn setBackgroundImage:[UIImage imageNamed:@"blue_button.png"]
forState:UIControlStateNormal];
其他是
[[UIButton appearance] setBackgroundImage:[UIImage imageNamed:@"blue_button.png"]
forState:UIControlStateNormal];
【讨论】:
但要求是在整个应用程序中更改按钮的外观,而不是在一个特定视图中。所以代码必须是通用的【参考方案2】:可能会有帮助
[btnClear setBackgroundImage:[UIImage imageNamed:@"blue_button.png"]
forState:UIControlStateNormal];
【讨论】:
所以如果我为一个特定按钮执行此操作,但有没有办法同时为所有按钮执行此操作?【参考方案3】:您的原始代码对我来说看起来不错,只要它可以找到图像文件。您可能需要检查 customBackground
是否为空。
我自己使用与您的完全相同的代码成功地完成了这项工作,并从应用程序委托中调用
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
如果您还没有这样做,我会尝试将您的代码放入此方法中。这将在整个应用中应用自定义背景。
【讨论】:
以上是关于无法更改 UIButton 外观的主要内容,如果未能解决你的问题,请参考以下文章
UIButton setBackgroundImage 恢复默认
使用imageView外观禁用UIButton而不将isEnabled设置为false
无法更改 UINavigationItem 中 UIButton 的标题