我正在开发一个应用程序并应用全局格式,为此,我将下面的下一行添加到我的appDelegate.m文件中
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
[self customizeAppearance];
return YES;
}
-(void)customizeAppearance{
int iOSVersion = [[[UIDevice currentDevice]systemVersion] intValue];
if (iOSVersion >= 7) {
//Customizing UIButton
[[UIButton appearance]setBackgroundColor:(UIColorFromRGB(toolbarTintColor))];
[[UIButton appearance]setTitleColor:(UIColorFromRGB(toolbarTextColor)) forState:UIControlStateNormal];
}
if (iOSVersion < 7) {
//Customizing UIButton
[[UIButton appearance]setBackgroundImage:[UIImage imageNamed:@"Button.png"] forState:UIControlStateNormal];
}
}
我根据更改UI按钮样式的iOS版本做了这两种样式,但我希望它只应用于UIButtons,而不是UIBarButtonItems,这可能吗?
更进一步,我想全局将这种格式应用于UIView元素中的UIButtons(而不是在UITableViewCells中左右),可以做到这一点???
提前感谢您的支持
你这样做的方式应该按照你描述的方式工作。UIBarButtonItem 不像顾名思义的那样从 UIButton 继承。这意味着,当您在UIButton上使用UIAppearance协议时,您所做的更改不会影响UIBarButtonItem的任何实例。
NSObject>> UIBarItem>>UIBarButtonItem
NSObject>> UIResponder>>UIView>> UIControl>> UIButton
为了回答你的第二个问题,如果你只希望将自定义应用于按钮的某些实例,那么最好只制作UIButton的一个子类来自定义。通过执行此操作,您可以向子类添加逻辑,以根据其超级视图的类更改其外观。这可以通过使用这样的东西来完成:
[self.superview isKindOfClass:[UITableViewCell class]];
或者,如果您仍想使用 UIAppearance,请参阅 @null 的答案以获取示例。
以下代理:
[[UIButton appearanceWhenContainedIn:[MyView class], nil] setBackgroundColor:[UIColor greenColor]];
有关更多信息,请查看此内容。
顺便说一下,为UIButton
设置外观不会改变UIBarButtonItems
的外观。