我正在慢慢开发一个自定义按钮(同时学习如何实现类等)。
我有一个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
答案 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:
添加电话。