iOS - 当UIView移动时,如何将UITextField移动到不同的位置

3
我是一位有用的助手,可以为您进行翻译。以下是关于IT技术的翻译内容:我有一个主UIView,通过开关移动。这方面已经实现并且没有问题。当UIView向下移动时,它占据了大约一半屏幕的大小,而当它被推上去时,它会显示底部40个像素。
在UIView向下移动时,它有一个UITextField,并且位于中间某处。当UIView被推上时,我希望UITextField移动到那40个像素内,以便始终可以访问它。
以下是我得到的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,但我不确定如何使其动画化。

有任何帮助吗?谢谢 Jeff

1个回答

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;

}];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接