2012-02-01 61 views
1

我儘量繞一個點一個UITableView,我用這個IBAction爲只有半旋轉的UIView/UITableView的點周圍

CALayer *l = self.table.layer; 
l.anchorPoint = CGPointMake(0,0); 
[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:1]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn]; 
CGAffineTransform rotate = CGAffineTransformMakeRotation(0.6); 
table.transform = rotate; 
[UIView commitAnimations]; 

工作,當我點擊所有表移動的按鈕冷杉另一比繞出轉角位置......問題是,在animation..If開頭的表移動到另一個位置,我把

CALayer *l = self.table.layer; 
l.anchorPoint = CGPointMake(0,0); 

在viewDidLoad中,當我打開應用程序的實現代碼如下是到另一個位置,但動畫是正確的,似乎l.anchorPoint將表移動到另一個位置......錯誤在哪裏?

回答

2

問題可能與l.anchor

setAnchor方法在圖層中設置centreframe。您已將中心點設置在左上角(0,0)。 (1,1)將是右下角。

圖層通過使用centre屬性自己定位。這表示超級圖層中的座標。因爲你已經改變了定位點,你的圖層將被偏移,因爲中心屬性現在是從左上角引用的,但是具有相同的子圖層座標。

如果您將錨設置爲(1,1),您會注意到右下角現在將成爲左上角的位置。

要解決您的問題,請設置錨點並通過設置centre屬性來重新定位圖層。

l.center = CGPoint (l.center.x - (l.frame.size.width/2), l.center.y - (l.frame.size.height/2); 

上面的代碼應該做的伎倆。

+0

原諒我,但如果我嘗試用你的代碼,我得到這個錯誤: 屬性「中心」不是類型的對象發現「的CALayer *」 我必須設置層或查看中心? – kikko088 2012-02-02 13:04:31

+0

確定....不是「中心」,但位置,現在似乎工作! – kikko088 2012-02-02 16:08:27