当我试图清理一些我想使用视图的代码时。但是UIButton
使我困扰。我尝试了以下内容:
[[UIButton appearanceWhenContainedInInstancesOfClasses:@[[UIViewController class]]] setBackgroundColor:[UIColor redColor]];
[[UIButton appearanceWhenContainedInInstancesOfClasses:@[[UIViewController class]]] setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
这就像预期的那样起作用,我所有的按钮都用蓝色变红(在我的项目中,我使用了其他颜色)。我注意到导航栏中的按钮也转动了,这是我宁愿添加这一行解决的第一个问题:
[[UIButton appearanceWhenContainedInInstancesOfClasses:@[[UINavigationBar class], [UIViewController class]]] setBackgroundColor:[UIColor clearColor]];
但这些不是唯一的按钮。iPad上的键盘按钮(撤消,重做和粘贴)还具有默认值以外的其他外观。有什么办法可以解决此问题?另外,是否有可以安全使用的外观列表,而无需"破坏"其他视图(例如在这种情况下,键盘按钮)?我不是在谈论所有出现的清单,因为我在这里找到了所有列表。
这个想法是仅选择我的UIViewController
中的按钮(还包含导航栏),但显然键盘也是UIViewController
的孩子。我希望有办法无需在按钮周围添加自定义视图或包装器。
使用空的实现,创建MyBaseViewController作为UiviewController的子类。将所有的ViewControllers更改为从MyBaseViewController继承。将您的呼叫更改为"外观" ininstancesofClasses方法,以引用mybaseViewController。
您的当前代码将影响UiviewController的所有实例,包括嵌入在Foundation或Uikit中的情况。通过使用自己的基类,您实际上是创建一个过滤器,将视图控制器与其他隔离。