2014-07-03 35 views
0

我得到了分段控制工作,但是當我移動它時,它給了我最奇怪的錯誤。我只能點擊一次,然後停止工作。分段控制動畫後停止工作

這裏是我的動畫代碼,這是搞亂分段控制

- (void)moveUnitsUp:(UIView*) element { 

    // Create an animation that will change the position of a layer 
    CABasicAnimation *mover = [CABasicAnimation animationWithKeyPath:@"position"]; 
    [mover setDuration:0.12]; 
    [mover setBeginTime:CACurrentMediaTime()+0]; 

    // Setting starting position 
    CGPoint initialPoint = [element.layer position]; 
    [mover setFromValue:[NSValue valueWithCGPoint:initialPoint]]; 

    // Setting ending position 
    CGPoint finalPoint = CGPointMake(initialPoint.x, initialPoint.y - 50); 
    [mover setToValue:[NSValue valueWithCGPoint: finalPoint]]; 

    // MAKE SURE IT DOESN'T MOVE BACK TO STARTING POSITION 
    [mover setRemovedOnCompletion:NO]; 
    [mover setFillMode:kCAFillModeForwards]; 

    // Add it to the layer 
    [element.layer addAnimation:mover forKey:@"BigMove"]; 

    // SET THE POSITION TO THE STARTING POSITION 
    [element.layer setPosition:finalPoint]; 

} 

非常感謝你的幫助:-)

+0

是控制控制器的self.view的子視圖,或者是一些其他的視圖的子視圖?爲什麼你使用這個方法而不是UIView方法,animateWithDuration:動畫,這將需要更少的代碼? – rdelmar

+0

我認爲這是一個子視圖,我將它添加到故事板中。讓我嘗試一下,但是我仍然想知道爲什麼這不起作用:-S – castillejoale

+0

如果一個控件超出其超視圖範圍,它將不會響應觸摸。如果它在子視圖中,則給該子視圖一個背景顏色,以便您可以查看該控件是否在其外部(或部分在外部)。 – rdelmar

回答

0

它看起來像你的「先行者」的一個唯一的移動.layer,而不是實際的分段條。該層只是控制器的表示,實際的控制器仍然在它開始的地方。要解決這個問題,您還需要將實際控制器轉換爲動畫結尾的新位置。

類似:

element.transform = CGAffineTransformMakeTranslation(0,-50);