我有一个视图,我想使用动画在左侧扩展。所有边框但左边的边框应保持不变,因此视图的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 :(得分: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];似乎工作正常。
答案 1 :(得分:0)
好的,我现在担心了。问题是我的视图是UIButton,我使用setBackground:forState:
和setTitle:forState:
设置标题和背景。
看来该视图的背景是不可动画的。我使用的工作是用UIImageView添加自己的背景。
感谢您的回复!