2011-08-27 166 views
3

我有一个主要的UIView,它通过开关向上移动。我有这个工作,那里没有问题。现在UIView下来时,占用屏幕的大约一半,当它被推高时,它显示底部40px。iOS - 在UIView移动时将UITextField移动到不同位置

在UIView中,它有一个UITextField,它位于中间的某处。当UIView被推高时,我想让UITextField移动到40px内,以便它始终可以访问。

这是我得到了UIView的代码中移动:

-(IBAction)mainview:(id)sender{ 

if (uiSwitch.on) { 
    label.text = @"Push Up View"; 
    [UIView beginAnimations:@"animateView" context:nil]; 
    [UIView setAnimationDuration:0.5]; 
    CGRect viewFrame = [subView frame]; 
    viewFrame.origin.y += 0; 
    subView.frame = viewFrame; 
    subView.alpha = 1.0; 
    [self.view addSubview:subView]; 
    [UIView commitAnimations]; 
} 

if ([uiSwitch isOn] == YES) { 
    [UIView beginAnimations:@"animateView" context:nil]; 
    [UIView setAnimationDuration:0.5];  
    CGRect viewFrame = [subView frame]; 
    viewFrame.origin.y = 0; 
    subView.frame = viewFrame;  
    [UIView commitAnimations]; 
} 
else { 
    label.text = @"Show View"; 
    [UIView beginAnimations:@"returnView" context:nil]; 
    [UIView setAnimationDuration:0.5]; 
    CGRect viewFrame = [subView frame]; 
    viewFrame.origin.y = -230; 
    subView.frame = viewFrame; 
    subView.alpha = 1.0; 
    [UIView commitAnimations]; 
}} 

的UITextField不添加到此还没有,这是我在哪里卡住了。我知道我可能不得不为UITextField创建一个类似的IBAction,但我不确定如何动画。

任何帮助??? Cheers Jeff

回答

10

您可以同时为多个视图设置动画。您的代码:

label.text = @"Show View"; 
[UIView beginAnimations:@"returnView" context:nil]; 
[UIView setAnimationDuration:0.5]; 
CGRect viewFrame = [subView frame]; 
viewFrame.origin.y = -230; 
subView.frame = viewFrame; 
subView.alpha = 1.0; 
[UIView commitAnimations]; 

..可以在自己的UITextField附加的帧操作:

label.text = @"Show View"; 
[UIView beginAnimations:@"returnView" context:nil]; 
[UIView setAnimationDuration:0.5]; 
CGRect viewFrame = [subView frame]; 
viewFrame.origin.y = -230; 
subView.frame = viewFrame; 
subView.alpha = 1.0; 
// let's move our textField too 
CGRect textFieldFrame=textField.frame; 
frame.origin.y+=40; 
textField.frame=textFieldFrame; 
[UIView commitAnimations]; 

请注意,如果你的目标的iOS 4.x或更高版本,你可以依靠动画块:

[UIView animateWithDuration:0.5 animations:^{ 

    CGRect frame; 

    // move our subView to its new position 
    frame=subView.frame; 
    frame.origin.y=-230; 
    subView.frame=frame; 
    subView.alpha=1.0; 

    // let's move our textField too 
    frame=textField.frame; 
    frame.origin.y=40; 
    textField.frame=frame; 

}]; 
+1

完美的作品 - 干杯:-) –