应用广泛的功能

时间:2011-04-26 12:55:03

标签: iphone objective-c uilabel

我想知道我可以定义任何功能应用程序吗?比如说我需要一个能给我标签动态高度的功能。在哪里以及如何定义此函数以便我可以在任意数量的文件中使用它?

还寻找基于文本计算标签动态高度的好代码。我在网站上尝试了很多代码,但这让我很困惑。

谢谢..

4 个答案:

答案 0 :(得分:4)

您可以通过创建.h / .m文件对来创建全局函数,但不要在其中声明Objective-C类。

相反,您可以使用C风格的功能,如下所示:

//Foo.h
CGFloat GetHeight(UIView *view);

//Foo.m
CGFloat GetHeight(UIView *view) {
    return view.frame.size.height;
}

然后,您可以在pch文件中包含头文件,以便将其包含在任何地方。

但是我认为在许多情况下使用类别方法更合适。类别方法将“附加”方法“附加”到类中。

//UIView+MyAdditions.h
@interface UIView (MyAddittions)
- (CGFloat)height;
@end

//UIView+MyAdditions.m
@implementation UIView (MyAdditions)
- (CGFloat)height {
   return self.frame.size.height;
}
@end

然后你可以像[myView height]一样使用它,只要.h文件包含在顶部(或全局)。

答案 1 :(得分:1)

您可以在Appdelegate中编写函数,也可以在自定义NSObject类中使用参数NSString编写静态方法。并且基于length的{​​{1}},您可以设置高度并从方法返回高度,该方法可以被调用此方法的类使用。

答案 2 :(得分:1)

通常我在前缀头中导入这样的类(这包括我在应用程序范围内使用的对象的类别)。前缀头中的所有导入都是应用程序范围的。 iOS项目中的前缀标头默认情况下如下所示:

appName_Prefix.pch

答案 3 :(得分:0)

如何通过返回标签高度的方法使category扩展UILabel的界面呢?

或者(但不是那么优雅)是创建一个包含所需静态方法的单例类。