2010-06-15 71 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添加自己的背景。

感谢您的回复!