程序化自定义UIButton在计时器后不会出现

时间:2014-05-21 12:41:26

标签: ios objective-c uibutton subviews

我一直在尝试编写一个程序,在计时器触发后会出现一个按钮。计时器工作正常,触发事件也是如此(我已经用不同的事件对此进行了测试)。但是,我正在制作的按钮没有显示出来。此外,我希望按下按钮背景图像时,按下按钮并保持按钮。我试过让按钮只有背景颜色而不是图像,但这也不起作用。代码位于视图控制器中的Timer选择器中。感谢任何帮助。谢谢!

- (void)timerFireMethod:(NSTimer *)timer
{
Button = [UIButton buttonWithType:UIButtonTypeCustom];
Button.center = CGPointMake(self.view.frame.size.width/2, self.view.frame.size.height/2);
[Button setBackgroundImage:[UIImage imageNamed:@"buttonUnheldBGImage"]
                                      forState:UIControlStateNormal];
[Button setBackgroundImage:[UIImage imageNamed:@"buttonHeldBGImage"]
                                      forState:UIControlStateHighlighted];
[Button setTitle:@"Press and Hold" forState:UIControlStateNormal];
[Button addTarget:self action:@selector(aSelector:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:Button];
}

调用它的计时器类是:

- (void)timer
{

globalTimer = [NSTimer scheduledTimerWithTimeInterval:5
                                      target:self
                                    selector:@selector(timerFireMethod:)
                                    userInfo:Nil
                                     repeats:NO];

}

globalTimer是全球NSTimer

3 个答案:

答案 0 :(得分:0)

你已经设置了按钮的中心,但你也需要它的框架,我相信按钮现在显示但是他的框架是(0,0)。

答案 1 :(得分:0)

您还必须为按钮设置尺寸。如果您希望它位于超级视图的中心,请执行以下操作:

CGRect buttonFrame = CGRectMake(self.view.frame.size.width/2-100,self.view.frame.size.height/2-100, 200,200);
Button.frame = buttonFrame;

中心属性非常适用于已经有大小的UI元素。

答案 2 :(得分:0)

只需替换前两行,

UIButton * Button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
Button.frame = CGRectMake(20, 200, 200, 200);