2010-09-13 44 views
0

好吧,這聽起來很簡單,但不知何故,我不能讓這個功能工作。移動一個查看

- (void)setViewMovedUp:(BOOL)movedUp { 

    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:0.5]; 

    CGRect rect = self.view.frame; 
    NSLog(@"%f",self.view.frame.size.height); 
    if (movedUp) 
    { 
     NSLog(@"test Moved Up"); 
     rect.origin.y += 60; 
     rect.size.height -= 300; 
    } 
    self.view.frame = rect ; 
    NSLog(@"%f after:",self.view.frame.size.height); 

    [UIView commitAnimations]; 

} 

所有NSLogs打印效果很好,「測試上升」出現,所以我知道沒有什麼錯上游。

此函數是我的MainViewController(它管理我的Window應用程序的根視圖)的實現文件的一部分。

我假設我必須致電:self.view.frame,對吧?

沒有錯誤或警告出現,但它只是不`噸,儘管正確打印出來的日誌移動..

編輯,這是在IB層次:

alt text


再次編輯:我真的想知道是否允許我將視圖向上移動,如果他們位於層次結構的頂部,我們是否允許將視圖向上移動?那麼後面會發現什麼?

+0

您正在將視圖向下移動60個像素,而不是向上移動。 – Satyam 2010-09-13 11:41:23

+0

好吧,錯誤的一面,但它應該仍然在移動,對嗎? – 2010-09-13 11:44:03

回答

0

嘗試刪除這三個動畫消息。

如果它的動作(我想不會,但...)

  1. 嘗試傳遞@ 「前移」 作爲第一個參數beginAnimations
  2. 嘗試使用setAnimationCurve

如果它不移動

  1. 是否在另一個視圖內設置此視圖的佈局的視圖?
  2. 你的主線程中調用這個(不是在後臺線程)

編輯:更新

你不應該需要做到這一點,但嘗試

[self.view setNeedsDisplay]; 

如果這不起作用,請在窗口上試試。更改框架應該自動執行此操作。

+0

因此,它不會移動只是刪除三個動畫消息。該視圖不在任何其他視圖內,但其中包含視圖。據我所知,這是在主線程內執行的。請參閱此處的示意圖:https://cacoo.com/diagrams/FFej49F5nTWCca4o – 2010-09-13 12:06:32

+0

您的應用程序中的內容會導致此問題被調用? – 2010-09-13 14:00:19

+0

滾動視圖中的按鈕 – 2010-09-14 01:06:01