在 iOS 7 和 Objective c 中使用 UIColor 类别

Posted

技术标签:

【中文标题】在 iOS 7 和 Objective c 中使用 UIColor 类别【英文标题】:Using a UIColor category in iOS 7 and Objective c 【发布时间】:2013-10-16 06:57:52 【问题描述】:

我有一个 UIColor+MyLayout.m 文件,例如:

@implementation UIColor (Layout)

- (UIColor *) textBackground

    UIColor *lightGreen = [UIColor colorWithRed:0.0f/255.0f green:178.0f/255.0f     blue:238.0f/255.0f alpha:1.0f];

    return lightGreen;


@end

我已将 .h 文件添加到我的 viewcontroller.m 中,但如何将其调用为 UIColor?

UIColor *myColor = ?

【问题讨论】:

你想要+ (UIColor *) textBackground 而不是- (UIColor *) textBackground。然后你可以像提供的答案一样简单地使用它。 【参考方案1】:

如果您执行以下操作会更好:

@implementation UIColor (Layout)

+ (UIColor *) textBackground 
    UIColor *lightGreen = [UIColor colorWithRed:0.0f/255.0f green:178.0f/255.0f        blue:238.0f/255.0f alpha:1.0f];
    return lightGreen;


@end

然后就叫它UIColor *myColor = [UIColor textBackground];

【讨论】:

他还需要导入类别。【参考方案2】:

Huge screenshot showing coloured text

试试这个....它的工作原理!!!!

1.UIColor的子类命名为vv。

所以,在 UIColor+vv.h

#import <UIKit/UIKit.h>

@interface UIColor (vv)
+(UIColor*)mh;
@end

UIColor+vv.m

#import "UIColor+vv.h"

@implementation UIColor (vv)
+(UIColor*)mh

     UIColor *lightGreen = [UIColor colorWithRed:0.0f/255.0f green:178.0f/255.0f     blue:238.0f/255.0f alpha:1.0f];
    return lightGreen;

@end

ViewController.m

#import "UIColor+vv.h"

- (void)viewDidLoad

    lbl.textColor=[UIColor mh];

如果您有任何问题,请告诉我。

【讨论】:

你必须创建UIColor 的子类而不是LAyoput 这对您有帮助吗?如果您尝试此操作并遇到任何问题,请告诉我。它对我有用。 为什么要重复现有的答案?为什么是巨大的屏幕截图? @MartinR,我不会重复相同的答案。只需查看所有其他答案。他们正在创建Layout 的子类,而不是UIColor。 &其他答案不被接受,所以我尝试使用以下代码显示输出。【参考方案3】:

你应该让这个方法像...一样静态

@implementation UIColor (Layout)

+ (UIColor *) textBackground 
    UIColor *lightGreen = [UIColor colorWithRed:0.0f/255.0f green:178.0f/255.0f        blue:238.0f/255.0f alpha:1.0f];
    return lightGreen;


@end

然后使用类名来调用它

UIColor *myColor = [UIColor textBackground];

你应该像导入 UIColor+MyLayout.h

#import UIColor+MyLayout.h

【讨论】:

这是一个 class 方法,而不是 static 方法。事实上,上面已经给出了相同的答案。 静态方法实际上是类方法【参考方案4】:

首先你必须在你的类中导入你的类别文件,例如:

#import "UIColor+Layout.h"

那么你需要调用这个方法为

[UIColor textBackground]

您还需要将您的类别方法设为类方法

【讨论】:

【参考方案5】:

您可以通过在签名中使用+ 而不是-textBackground 转换为类方法,然后简单地:

UIColor *myColor = [UIColor textBackground];

【讨论】:

以上是关于在 iOS 7 和 Objective c 中使用 UIColor 类别的主要内容,如果未能解决你的问题,请参考以下文章

iOS - 在同一个项目中使用 Swift 和 Objective c?

使用 Objective C 在 iOS8 中分离横向和纵向视图

《iOS开发全然上手——使用iOS 7和Xcode 5开发移动与平板应用》之Objective-C新手训练营

IOS项目目标中的多个Objective C桥接头

如何使用 Objective C 在 iOS 上本地下载和保存文件? [复制]

在 Objective C 中的 iOS 应用程序中使用核心数据作为数据库的步骤