[ios] 旋轉UIButton


Answers

嘗試使用CGAffineTransformRotate而不是CGAffineTransformMakeRotation 。 你可以使用`CGAffineTransformIdentity1作為所有調用的第一個參數,所以根據第二個參數的最終變換將被應用在框架的原始形狀(?)上。

Question

我一直在嘗試使用以下方法旋轉按鈕:

-(IBAction)rotate:(id)sender{
    CGPoint pencilCenter = pencil.center;
    [pencil setCenter:pencilCenter];
    CGFloat floater = 1.0;
    [UIView animateWithDuration:0.7 animations:^(void){
        [pencil setTransform:CGAffineTransformMakeRotation(floater)];
    }];
    [UIView animateWithDuration:0.7 animations:^(void){
        [pencil setTransform:CGAffineTransformMakeRotation(floater)];
    }];
}

這應該是讓按鈕做某種“搖動”,然後它應該回到原來的位置 - 但它所做的只是改變按鈕的位置,將其移動到只有一邊,在另一個方法的運行按鈕根本沒有反應。

我的代碼有什麼問題?

謝謝!

編輯2:我的問題是 - 我怎麼做一個按鈕來做一個小搖/擺動,例如擺動應用程序模式時編輯spboardboard。

使用這個代碼給我旋轉到左邊,順利的動畫從左到右,然後從右到左,然後旋轉到原來的位置。 現在,我想這不是只是旋轉,而是做一個動畫,就像一個擺動。

[UIView animateWithDuration:0.25
                      delay:0.0
                    options:(UIViewAnimationOptionAllowUserInteraction | UIViewAnimationCurveLinear | UIViewAnimationOptionAutoreverse)
                 animations:^ {
                     pencil.transform = CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(30));
                     pencil.transform = CGAffineTransformIdentity;
                 }
                 completion:^(BOOL finished){
                 }
 ];

謝謝!




那麼, 文檔說:“...指定的動畫立即開始在另一個線程...”。 現在,所有UIKit代碼都不是線程安全的。 所以,也許它有幫助,而不是從完成塊(它運行在一個單獨的線程中)調用你的UI setter(setTransform,setCenter)來使用performSelectorOnMainThread:withObject:來調用它們。




Links