2011-06-12 86 views
9

我已經看到一些簡單的UIView幻燈片或滑出的在線示例代碼。有一個UIView以其座標離開屏幕(負數)開始是有意義的,然後動畫參數只是改變UIView的框架。所以第一個問題是:這是否提供了最明顯的方法?動畫UIView frame.origin

但是,在我的代碼中,幀原點不可分配。我得到的那條線的Xcode錯誤表示同樣多。

我只是想這樣做動畫裏面:

self.viewPop.frame.origin.y = 100;

任何幫助表示讚賞。

更新:我已經解決了這個問題。我發現的技術是您的視圖的框架分配給另一個的CGRect,並更改到的CGRect,然後分配給它回到框架:

CGRect frame=self.moveView.frame; 
frame.origin.x=newvalue. 


[UIView animateWithDuration:2.0 animations:^{ 

    self.moveView.frame=frame; 

}]; 
+1

將您的解決方案移到答案中,然後將其標記爲正確答案。 – 2011-06-13 02:33:36

回答

11

更新:我已經解決了這個問題。我發現的技術是您的視圖的框架分配給另一個的CGRect,並更改到的CGRect,然後分配給它回到框架:

CGRect frame=self.moveView.frame; 
frame.origin.x=newvalue. 


[UIView animateWithDuration:2.0 animations:^{ 

self.moveView.frame=frame; 

}]; 
1

FWIW,這是很好的有一個UIView類別圍繞這種類型的事情:

@interface UIView (JCUtilities) 

@property (nonatomic, assign) CGFloat frameX; 

-(CGFloat)frameX; 
-(void)setFrameX:(CGFloat)newX; 

@end 

@implementation UIView (JCUtilities) 

- (CGFloat)frameX { 
    return self.frame.origin.x; 
} 

- (void)setFrameX:(CGFloat)newX { 
    self.frame = CGRectMake(newX, self.frame.origin.y, 
          self.frame.size.width, self.frame.size.height); 
}