2011-06-12 83 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); 
}