UIView frame.origin的动画效果

10

我在网上看到一些关于简单的UIView滑入或者滑出的代码示例。将UIView的坐标设为负数,然后通过动画参数改变UIView的frame是有意义的。所以第一个问题是:这是否提供了最明显的方法?

然而,在我的代码中,frame原点无法分配。我得到了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
将您的解决方案移至答案区,然后将其标记为正确答案。 - Wilbur Vandrsmith
2个回答

12

我已经解决了这个问题。我发现的技巧是将视图的框架分配给另一个CGRect,并对该CGRect进行更改,然后将其重新分配回框架:

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


[UIView animateWithDuration:2.0 animations:^{ 

    self.moveView.frame = frame;

}];

1

顺便说一句,拥有一个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);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接