2012-08-23 33 views
0

我有一個很奇怪的問題。我試圖旋轉和viewDidAppear手動移動一個UIView的上海華像這樣:通過設置其中心屬性來移動UIView的超級視圖

- (void)viewWillAppear:(BOOL)animated 
{ 
    // ... 

    [self.view.superview setTransform:CGAffineTransformMakeRotation(M_PI/2)]; 
    [self.view.superview setCenter:CGPointMake(100, 200)]; // (100, 200) is toy value 

    // ... 
} 

出於某種原因,旋轉正確應用,但上海華中心(即位置)不動的。我也嘗試將轉換設置爲CGAffineTransform,這是旋轉+翻譯(或者僅僅是翻譯)的組合,並且也不會移動超視圖。

如果有差別,self.view.superview是最頂端的視圖(即self.view.superview.superviewnil)。

我在這裏錯過了很簡單的東西嗎?

編輯:nielsbot的評論是正確的,把它放在viewDidLoad工作,但到那時,視圖已經出現,所以有一個閃爍的地方,它捕捉到新的位置。有沒有解決的辦法?

+1

在'viewDidAppear'中嘗試它 - 您的代碼表示'viewWillAppear'。在*出現*之後,可能會運行一些佈局代碼並撤消更改。 – nielsbot

+0

首先,通過「旋轉正確應用但超視圖完全不移動」來說清楚你想說的是什麼? – Nayan

+0

@nielsbot工作,但有一個閃爍,因爲它首先顯示視圖,然後在那裏移動它。有沒有辦法避免這種情況? – kevlar

回答

0

嘗試設置視圖,這樣的邊界:

[self.view.superview setBounds:CGRectMake(x,y,self.view.superview.width,self.view.superview.height)]; 

這應該視圖移動到x,y位置你給他 但當然這不是中心

中心僅有代表例如用於旋轉的特殊點

+0

我相信,一旦我在視圖上設置了轉換,該框架就不再有效:http://developer.apple.com/library/ios/#documentation/uikit/reference/uiview_class/UIView/UIView.html#//apple_ref/doc/uid/TP40006816-CH3-SW3 – kevlar

+0

這就是糾正幀的左上角(原點)隨着變換而移動的情況,如果您不想爲幀計算新點,請使用邊界原點 – lukaswelte

相關問題