我发现自己在我的应用中反复创建了相同的UILabel。所以我认为这是为它创建一个类并且只是调用类的好时机?
例如,我多次重复使用此代码来为视图中的UINavigationBar创建UILabel,唯一的区别是我认为我可以作为参数传递的label.text:
// - - - - - Add a Navigation Bar
UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
navBar.barStyle = UIBarStyleBlack;
navBar.translucent = YES;
[self.view addSubview:navBar];
[navBar release];
// - - - - - Add a label to the navbar
UILabel *navLabel = [[UILabel alloc] initWithFrame:CGRectMake(20,8,280,30)];
navLabel.autoresizingMask = UIViewAutoresizingFlexibleWidth;
navLabel.text = @"Some Label String";
navLabel.backgroundColor = [UIColor clearColor];
navLabel.textColor = [UIColor whiteColor];
navLabel.font = [UIFont boldSystemFontOfSize:20];
navLabel.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
navLabel.textAlignment = UITextAlignmentCenter;
[navBar addSubview:navLabel];
[navLabel release];
所以我认为我应该能够创建一个UILabelNavBar类,并通过这样调用它来创建UILabel:
navBar addSubview:[UILabelNavBar createLabel:@"Some Label String"]];
除了我不知道如何创建这个类。 任何帮助表示赞赏。 LQ
答案 0 :(得分:3)
档案 - >新文件... - > Objective C class - > UIView子类 - >输入班级名称 - >选择文件夹 - >将刚刚创建的.m和.h文件中的UIView更改为UILabel
答案 1 :(得分:1)
感谢Adubr的推动,以下工作:
// *** OftenUsedLabel.h ***
#import <UIKit/UIKit.h>
@interface OftenUsedLabel : UILabel
{
UILabel *oftenUsedLabel;
}
@property (nonatomic, retain) UILabel *oftenUsedLabel;
@end
// *** OftenUsedLabel.m ***
#import "OftenUsedLabel.h"
@implementation OftenUsedLabel
@synthesize oftenUsedLabel;
- (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
CGRect rect;
rect = CGRectMake(0.0,0.0,280.0,30.0);
oftenUsedLabel = [[UILabel alloc] initWithFrame:rect];
oftenUsedLabel.backgroundColor = [UIColor clearColor];
oftenUsedLabel.textColor = [UIColor whiteColor];
oftenUsedLabel.font = [UIFont boldSystemFontOfSize:20];
oftenUsedLabel.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
oftenUsedLabel.textAlignment = UITextAlignmentCenter;
[self addSubview:oftenUsedLabel];
}
return self;
}
- (void)dealloc {
[oftenUsedLabel release];
[super dealloc];
}
// *** SomeViewController.m ***
#import "OftenUsedLabel.h"
// CALL THE LABEL LIKE THIS:
CGRect rect;
rect = CGRectMake(0.0, 0.0, 320.0, 60.0);
UILabel *myLabel = [[[OftenUsedLabel alloc] initWithFrame:rect] autorelease];
myLabel.text = @"Some Text";
[self.view addSubview:myLabel];
[myLabel release];
答案 2 :(得分:0)
你这里不需要上课。只需定义addLabel(UINavigationBar *navBar, ... text)
之类的函数并使用它。
答案 3 :(得分:-2)
用什么语言创建? (看起来像XAML / WPF对我...或FLEX?)
一般来说,语法如下:
Class NavBar()
{
function navBar()
{
//new navbar object
UINavigationBar *navBar = [[UINavigationBar alloc]
initWithFrame:CGRectMake(0, 0, 320, 44)];
navBar.barStyle = UIBarStyleBlack;
navBar.translucent = YES;
[self.view addSubview:navBar];
[navBar release];
//call the navbar function and create the label for the new navbar
navBarLabel()
}
function navBarLabel()
{
UILabel *navLabel = [[UILabel alloc] initWithFrame:CGRectMake(20,8,280,30)];
navLabel.autoresizingMask = UIViewAutoresizingFlexibleWidth;
navLabel.text = @"Some Label";
navLabel.backgroundColor = [UIColor clearColor];
navLabel.textColor = [UIColor whiteColor];
navLabel.font = [UIFont boldSystemFontOfSize:20];
navLabel.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
navLabel.textAlignment = UITextAlignmentCenter;
[navBar addSubview:navLabel];
[navLabel release];
}
}
但也取决于编程语言和可能的平台。 :)此外,如果您将其创建为外部类并将其公开,您应该能够在需要时调用这些函数。
因此,例如,可以在不调用navBar标签的情况下创建navBar ...然后用户可以决定是否为此新标签输入内容。如果他们没有输入任何内容,程序会继续使用下一个方法,或者用户创建一个新标签。
这将是一个动态且更具互动性的系统。 :)
希望有所帮助。