在 iOS 中将条件全局格式转换为 UIButton



我正在开发一个应用程序并应用全局格式,为此,我将下面的下一行添加到我的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的外观。

相关内容

  • 没有找到相关文章

最新更新