0

我想制作一个具有随机移动或在您触摸屏幕的位置移动的视图的应用程序。我有以下问题:我制作了一个开始随机动画的按钮,我想制作另一个停止动画的按钮。问题是两个按钮重叠,只有第一个显示在第二个的位置,我按下它,第二个显示在应该的位置。我不知道我做错了什么,可能我的子视图有问题。这是我绘制按钮的代码。

- (void)drawRect:(CGRect)rect {
// Drawing code

UIButton *randomMovementButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[randomMovementButton addTarget:self 
           action:@selector(animationLoop:finished:context:)
 forControlEvents:UIControlEventTouchDown];
[randomMovementButton setTitle:@"Move Random" forState:UIControlStateNormal];
randomMovementButton.frame = CGRectMake(80.0, 210.0, 160.0, 40.0);
[self addSubview:randomMovementButton];

UIButton *stopButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[stopButton addTarget:self
            action:@selector(stopAnimation:) 
     forControlEvents:UIControlEventTouchDown];
[randomMovementButton setTitle:@"Stop Moving Random" forState:UIControlStateNormal];
randomMovementButton.frame = CGRectMake(80.0, 210.0, 200.0, 40.0);
[self addSubview:stopButton];
}

弄清楚我的错误,我对按钮的名称感到困惑并误用了它们。

4

2 回答 2

0

它们不重叠。第二个按钮没有框架。你写了这个:

UIButton *stopButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[stopButton addTarget:self
        action:@selector(stopAnimation:) 
 forControlEvents:UIControlEventTouchDown];
[randomMovementButton setTitle:@"Stop Moving Random" forState:UIControlStateNormal];
randomMovementButton.frame = CGRectMake(80.0, 210.0, 200.0, 40.0);
[self addSubview:stopButton];

在第三和第四行你写randomMovementButton的不是stopButton. 这意味着 Title 和 frame 都设置为 randomMovementButton 而不是 stopButton。此外,第二部分和第一部分的框架是相同的(两者都是CGRectMake(80.0, 210.0, 200.0, 40.0)),这会使它们在您修复它时重叠。改变其中之一。

于 2012-06-18T21:55:08.480 回答
0

只需为两个按钮使用不同的框架,它们就不会重叠......

于 2012-06-18T21:18:44.863 回答