2010-06-15 106 views
2

我有一個視圖,我想使用動畫在左側進行擴展。除了左邊的所有邊界都應該保持不變,所以視圖的x位置和寬度都在變化。將視圖擴展到左側,動畫

我用這個代碼:如果我運行這段代碼

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:5.0]; 
self.frame = CGRectMake(self.frame.origin.x-100, 
         self.frame.origin.y, 
         self.frame.size.width+100, 
         self.frame.size.height); 
[UIView commitAnimations]; 

,視圖的寬度將立即設置爲新的值,然後將視圖移動到新的X點,但是爲什麼呢?我怎樣才能改變這種行爲?

感謝您的想法!

回答

0

您的代碼適合我。你如何運行它?調用-setFrame是你正在做的事情的正確選擇。這裏是我的自定義視圖是什麼樣子:

#import "TestView.h" 

@implementation TestView 

- (id)initWithFrame:(CGRect)frame { 
    if ((self = [super initWithFrame:frame])) { 
     // Initialization code 
    } 
    return self; 
} 

- (void)dealloc { 
    [super dealloc]; 
} 

- (void)go; 
{ 
    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:5.0]; 
    self.frame = CGRectMake(self.frame.origin.x-100, 
           self.frame.origin.y, 
           self.frame.size.width+100, 
           self.frame.size.height); 
    [UIView commitAnimations]; 
} 

@end 

我從我的觀點型TestView的控制器創建一個出口,並進行連接並設置在IB型。然後我創建一個按鈕,其處理程序調用[customView go];似乎工作正常。

+0

我按下按鈕後開始執行代碼,因此所有視圖初始化操作都應該完成。 – Erik 2010-06-16 07:24:01

+0

我現在試圖只使用frame屬性更改視圖的大小,但不會發生動畫。 如果我嘗試使用邊界屬性更改大小,視圖移動...不是有點奇怪嗎? – Erik 2010-06-16 08:23:31

+0

這是我做的一個演示項目。看看你是否能找到你在做什麼和我有什麼之間的區別:http://www.cimgf.com/files/GrowViewLeft.zip – 2010-06-16 16:18:57

0

好吧,我現在就開始行動了。問題是我的觀點是一個UIButton,我用setBackground:forState:setTitle:forState:來設置標題和背景。 看來,背景並非動畫。我使用周圍的工作,我用UIImageView添加自己的背景。

感謝您的回覆!