如何制作适用于多个视图的方法?例如。我创造了这个:
- (void)setPageTitle:(UILabel *)title withText:(NSString *)text
{
UIColor *pageTextColor = [UIColor colorWithRed:18.0/255.0 green:79.0/255.0 blue:118.0/255.0 alpha:1.0];
// Set page title
UIFont *font = [UIFont fontWithName:@"PassionOne-Regular" size:23];
[title setFont:font];
[title setText: text];
title.textColor = pageTextColor;
title.shadowColor = [UIColor colorWithRed:255.0/255.0 green:255.0/255.0 blue:255.0/255.0 alpha:1.0];
title.shadowOffset = CGSizeMake(0, 1);
CGRect titleRect = [title textRectForBounds:title.bounds limitedToNumberOfLines:999];
CGRect tr = title.frame;
tr.size.height = titleRect.size.height;
title.frame = tr;
}
我希望能够在不同视图中的UILabels上调用setPageTitle方法。我该怎么做呢?我在哪里放置此代码才能使其正常工作?我只想把它放在1个文件中,让它在不同的视图中工作。谢谢。
答案 0 :(得分:9)
我建议将其作为UIView类的一个类别。
的UIView + PageTitle.h
@interface UIView (PageTitle)
- (void)setPageTitle:(UILabel *)title withText:(NSString *)text;
@end
的UIView + PageTitle.m
#import "UIView+PageTitle.h"
@implementation UIView (PageTitle)
- (void)setPageTitle:(UILabel *)title withText:(NSString *)text {
// your implementation
}
@end
答案 1 :(得分:1)
你可能正在寻找的是要么创建一个UIViewController
的子类(我相信你正在使用它),并将它作为一个方法,将它作为你的类MyUIViewController
,或者,您可以创建UIViewController
的类别并添加该方法。 Here是关于如何创建类别以及一些有用信息的说明。类别是类的功能的扩展,几乎是你想要做的。
答案 2 :(得分:1)
如果您想使用category,至少应该创建一个有用的类别。不使用self
的类别中的实例方法是错误的。
由于您正在操纵UILabel
,因此您应该将其设为UILabel
类别。
@interface UILabel (PageTitle)
- (void)setPageTitle:(NSString *)text {
UIColor *pageTextColor = [UIColor colorWithRed:18.0/255.0 green:79.0/255.0 blue:118.0/255.0 alpha:1.0];
// Set page title
UIFont *font = [UIFont fontWithName:@"PassionOne-Regular" size:23];
[self setFont:font];
[self setText: text];
self.textColor = pageTextColor;
self.shadowColor = [UIColor colorWithRed:255.0/255.0 green:255.0/255.0 blue:255.0/255.0 alpha:1.0];
self.shadowOffset = CGSizeMake(0, 1);
CGRect titleRect = [self textRectForBounds:self.bounds limitedToNumberOfLines:999];
CGRect tr = self.frame;
tr.size.height = titleRect.size.height;
self.frame = tr;
}
@end
像这样使用它:
UILabel *myLabel;
[myLabel setPageTitle:@"Foobar"];
答案 3 :(得分:0)
添加快速方法是添加一个'+',使其成为另一个类中的静态方法:
UIKitUtilities.h
+ (void)setPageTitle:(UILabel *)title withText:(NSString *)text;
在m文件中:
+ (void)setPageTitle:(UILabel *)title withText:(NSString *)text { ...your code here... }