0

我正在尝试将子视图(UITextField)添加到视图并以相同的方法更改 a 的 frame 属性,UITextView但它没有按我的预期工作。这是代码:

UITextField *textField = [[UITextField alloc] init];
textField.backgroundColor = [UIColor redColor];
textField.frame = CGRectMake(0, 120, 240, 40);

[UIView beginAnimations:@"MoveView" context:nil];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
[UIView setAnimationDuration:0.5f];
self.tvContent.frame = CGRectMake(0, 80, self.tvContent.frame.size.width, self.tvContent.frame.size.height);
[UIView commitAnimations];
[self.view insertSubview:textField aboveSubview:self.tvContent];

注意: tvContent 是UITextView我要重新定位的对象。

我面临的问题是,如果最后一行代码(insertSubview)到位,UITextView则根本没有移动。虽然确实出现了。但是,如果我删除最后一行,textview 会很好地改变它的位置。The UITextField

我也尝试过不使用动画,只设置 self.tvContent 的 frame 属性,并且发生了相同的行为。

有什么想法可以解决这个问题吗?

4

2 回答 2

0

这样做,

UITextField *textField = [[UITextField alloc] init];
textField.backgroundColor = [UIColor redColor];
textField.frame = CGRectMake(0, 120, 240, 40);

[UIView beginAnimations:@"MoveView" context:nil];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
[UIView setAnimationDuration:0.5f];
self.tvContent.frame = CGRectMake(0, 80, self.tvContent.frame.size.width, self.tvContent.frame.size.height);
[UIView setAnimationDidStopSelector:@selector(animationFinish)];
[UIView commitAnimations];

-(void)animationFinish {
[self.view insertSubview:textField aboveSubview:self.tvContent];
}
于 2013-02-11T08:31:36.193 回答
0

你还在使用好beginAnimations东西有什么原因吗?

这会做同样的事情:

[UIView animateWithDuration:0.5 animations:^(void) {
    self.tvContent.frame = CGRectMake(0, 80, self.tvContent.frame.size.width, self.tvContent.frame.size.height);
} completion:^(BOOL finished) {
    [self.view addSubview:textField];
}];

编辑:如果你只是 addSubView 它会发生什么?

于 2013-02-11T08:36:20.250 回答