子类化UIView / UIViewController

时间:2013-01-24 03:45:30

标签: ios objective-c uiview uiviewcontroller uibutton

我的应用中需要很多自定义按钮。目前我正在使用故事板在我需要的每个控制器上定义这些按钮。但是,我觉得因为我需要在整个应用程序中使用它们,所以最好放入一个不同的视图控制器/视图子类UIViewUIViewController,所以如果我需要进行任何更改,我会必须做一次而不是在不同的视图控制器中。最好的方法是什么?你也可以告诉我如何以编程方式创建按钮?这就是我现在正在做的事情,而且我得到一个完全空白的屏幕。

-(void)viewDidAppear:(BOOL)animated 
{ 
    UIButton *testButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [testButton setFrame:CGRectMake(0, 390, 100, 40)];
    [testButton setAutoresizingMask:UIViewAutoresizingFlexibleTopMargin];
    [setImage:[UIImage imageNamed:@"test_button"] forState:UIControlStateNormal];
    [setImage:[UIImage imageNamed:@"test_button"] forState:UIControlStateHighlighted];  
    [setEnabled:YES];
    [self.view addSubview:testButton];
 }

1 个答案:

答案 0 :(得分:1)

您的按钮有可能远离可见的矩形。为了以编程方式添加按钮,您大部分都是正确的。此外,图像应具有文件扩展名。因为你要添加一个customButton,如果没有图像,那么你不会看到任何按钮。尝试为按钮添加标题,即使没有添加图像也会显示。

尝试以下代码。

-(void)viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:animated]; //you must have a good reason to not add this line.
    UIButton *testButton=[UIButton buttonWithType:UIButtonTypeCustom];
    [testButton setFrame:CGRectMake(0, 20, 100, 40)];
    [testButton setAutoresizingMask:UIViewAutoresizingFlexibleTopMargin];
    [testButton setImage:[UIImage imageNamed:@"test_button.png"] forState:UIControlStateNormal];
    [testButton setImage:[UIImage imageNamed:@"test_button.png"] forState:UIControlStateHighlighted]; 
    [testButton setEnabled:YES];
    [self.view addSubview:testButton];
 }