-2

我正在开发一个应用程序并应用全局格式,为此我在 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];
    }
}

我根据更改 UIbutton 样式的 iOS 版本做了这两种样式,但我希望它只应用于 UIButtons,而不是 UIBarButtonItems 这可能吗?

更进一步,我想将这种格式全局应用于 UIView 元素内的 UIButtons(不在 UITableViewCells 左右)可以这样做吗?

提前感谢您的支持

4

2 回答 2

1

您可以使用以下代理:

[[UIButton appearanceWhenContainedIn:[MyView class], nil] setBackgroundColor:[UIColor greenColor]];

有关更多信息,请查看

顺便说一句,设置外观UIButton不会改变外观UIBarButtonItems

于 2013-10-01T17:42:43.430 回答
1

你这样做的方式应该按照你描述的方式工作。UIBarButtonItem 并不像名称所暗示的那样从 UIButton 继承。这意味着当您在 UIButton 上使用 UIAppearance 协议时,您所做的更改不会影响 UIBarButtonItem 的任何实例。

NSObject >> UIBarItem >>UIBarButtonItem

NSObject >> UIResponder >>UIView >> UIControl >> UIButton

为了回答您的第二个问题,如果您只希望将自定义应用于按钮的某些实例,那么您最好只创建一个 UIButton 的子类来自定义。通过这样做,您可以向子类添加逻辑以根据其父视图的类更改其外观。这可以通过使用类似这样的东西来完成:

[self.superview isKindOfClass:[UITableViewCell class]];

或者,如果您仍想使用 UIAppearance,请参阅@null 的答案以获取示例。

于 2013-10-01T17:43:39.660 回答