通过类中的方法创建Label

时间:2012-05-15 13:10:50

标签: iphone ios uikit

我正在慢慢开发一个自定义按钮(同时学习如何实现类等)。

我有一个ViewController,它导入一个SuperButton.h(UIControl),然后创建一个SuperButton实例。 (这可以通过NSLog证明。)

但我无法在SuperButton中获取显示Label的方法。 我认为这可能与'.center'值或'addSubview'命令有关?

我真的很感谢你的帮助。感谢。

这是我的SuperButton.m代码:

#import "SuperButton.h"

@implementation SuperButton
@synthesize firstTitle;
@synthesize myLabel;

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
    }
    return self;
}
- (void) shoutName{
    NSLog(@"My name is %@", firstTitle);

    self.backgroundColor = [UIColor blueColor];
    CGRect labelFrame = CGRectMake(0.0f, 0.0f, 100.0f, 50.0f);
    self.myLabel = [[UILabel alloc] initWithFrame:labelFrame];
    self.myLabel.text = @"Come on, don't be shy.";
    self.myLabel.font = [UIFont italicSystemFontOfSize:14.0f];
    self.myLabel.textColor = [UIColor grayColor];
    self.myLabel.center = self.center;
    [self addSubview:self.myLabel];
}

以下是我的ViewController中的代码:

- (void) makeButton{
    SuperButton *button1 = [[SuperButton alloc] init];
    button1.firstTitle = @"Mr. Ploppy";
    [button1 shoutName];
}

(编辑:)以防万一,这是SuperButton.h代码:

#import <UIKit/UIKit.h>
@interface SuperButton : UIControl

@property (nonatomic, strong) NSString *firstTitle;
@property (nonatomic, strong) UILabel *myLabel;

- (void) shoutName;

@end

2 个答案:

答案 0 :(得分:1)

我在其他地方找到了答案。 我需要添加子视图'按钮'。我的工作代码现在看起来像这样:

- (void) makeButton{
    SuperButton *button1 = [[SuperButton alloc] init];
    button1.firstTitle = @"Mr. Ploppy";
    [button1 shoutName];
    [self.view addSubview:button1.myLabel];
    [self.view sendSubviewToBack:button1.myLabel];
}

答案 1 :(得分:0)

您正在使用initWithFrame:方法初始化按钮,但使用简单的init。这使得按钮的大小为CGRectZero。改变这一行:

SuperButton *button1 = [[SuperButton alloc] init];

到此:

SuperButton *button1 = [[SuperButton alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 100.0f, 50.0f)];

或在初始化按钮后向setFrame:添加电话。