我有一个主 UIView,它通过开关向上移动。我有这个工作,那里没有问题。现在,UIView 当向下时,占据屏幕的大约一半,当它向上推时,它会显示底部 40px。
在 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,但我不确定如何为该位设置动画。
有什么帮助吗???干杯杰夫
您可以同时为多个视图设置动画。你的代码:
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;
}];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)