无法更改 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

为啥我无法更改 UIButton 文本颜色?

无法更改 UINavigationItem 中 UIButton 的标题

无法更改 UITableViewCell 内的 UIButton 图像

iOS 8:UIButton 外观字体