3

我正在爲按鈕的位置設置動畫,將它圍繞一個圓旋轉。這會產生類似UISwitch的行爲,除了它更加花哨。按鈕旋轉,但它會以大約0.25弧度結束離開所需的位置。我試圖找出在哪裏放置錨點,使按鈕圍繞其原點旋轉一個完美的圓。尋找旋轉變換的正確錨點難度

下面是我用來製作距原始位置120像素半徑的按鈕「軌道」的代碼。

float offsetX=120; 
float offsetY=0; 

enableDisableButton.layer.anchorPoint = 
    CGPointMake(offsetX/enableDisableButton.frame.size.width,     
       offsetY/enableDisableButton.frame.size.height); 

我用下面的方法來做計算。路過的90參數爲degrees,我希望看到該按鈕開始在180˚位置,並移動到90˚,還是從它的起源120個像素遠

-(CGAffineTransform)calculateLabelPositionFromFixedPointWithOffsetClockwiseInDegrees:(float)degrees 
{ 

    float rotation = degrees*(2*M_PI/360); 
    CGAffineTransform transform24 = CGAffineTransformMakeRotation(rotation); 
    NSLog(@"rotation: %f", rotation); 
    return transform24; 
} 

這一點弧度0.25左右偏移意味着我需要在視覺上確認每個按鈕的位置,並且不能通過編程方式輕鬆調整其位置。讚賞任何幫助確定正確的旋轉按鈕的方法。

我試過其他方法來旋轉對象。例如,我有一個箭頭 <--------x,我想圍繞x圍繞一圈轉動此箭頭。此操作的正確錨點位置是什麼?它是[1,0.5]嗎?

做這種旋轉的一種更簡單的方法是將對象放置在對稱的對稱內,將其置於所需的旋轉點並分配旋轉變換。這是有效的,但要求視圖大一倍:

Y----x----Y <這使Y圍繞中心點X旋轉,沒有任何錨點調整。這是在模擬量規等內旋轉箭頭非常有用的方法。

回答

0

「做這種旋轉的一種更簡單的方法是將對象放置在對稱的UIView中,將它置於所需的旋轉點並分配旋轉變換。」這種方式很好。

0

enableDisableButton的該示例中的錨點將是

CGPointMake(offsetX/enableDisableButton.frame.size.width, 0) 

即不在您的按鈕垂直居中。圍繞錨點旋轉會導致按鈕偏移到所需位置的頂部或底部。轉換看起來很好,所以我認爲它只是一個定位點。它應該是:

CGPointMake(offsetX/enableDisableButton.frame.size.width, 0.5f)