我正在尝试向视图添加子视图(UITextField
)并在同一方法中更改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
对象。
我面临的问题是UITextView
根本没有移动 IF 最后一行代码(insertSubview)就位。 The UITextField
确实出现了。但是,如果我删除最后一行,textview会改变它的位置。
我还试过没有动画,只需设置self.tvContent的frame属性,就会发生同样的行为。
有任何解决此问题的想法吗?
答案 0 :(得分: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];
}
答案 1 :(得分: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];
}];
编辑:如果你只是添加子视图会怎么样?