为重用的UILabel创建一个类

时间:2011-05-15 23:50:53

标签: iphone xcode uilabel

我发现自己在我的应用中反复创建了相同的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

4 个答案:

答案 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 ...然后用户可以决定是否为此新标签输入内容。如果他们没有输入任何内容,程序会继续使用下一个方法,或者用户创建一个新标签。

这将是一个动态且更具互动性的系统。 :)

希望有所帮助。

相关问题