我正在构建一个基本的计算器应用程序。计算器已经完全正常运行,具有基本功能。我遇到的问题是我在屏幕上跑出了空间来添加其他更高级的功能。理想情况下,我想要做的是创建某种子类和视图,当按下屏幕底部的按钮时,它会滑动到标签的底部(显示完成的计算)。换句话说,我想要一个具有更多运算符和计算选项的视图滑动到标签的底部,我不希望此视图覆盖标签中显示的任何数字。反正有没有实现这个目标?
答案 0 :(得分:2)
是的,你可以。按下按钮时,创建新视图(使用额外功能),将其作为子视图添加到self.view,并为其框架更改动画,使其框架从可见视图下方更改为数字下方
像这样:
-(void) buttonPressed {
UIView *myNewView = << create your view >>
myNewView.frame = CGRectMake(0,480, 320,200); // or whatever your width and height are
// 480 means it will be below the visible frame.
[self.view addSubview: myNewView];
float bottom_Y_of_digit_display = 100;// or wherever it is...
[UIView beginAnimations:nil contenxt:nil];
[UIView setAnimationDelay: 0.0];
[UIView setAnimationDuration: 1.0]; // one second.
myNewView.frame = CGRectMake(0,bottom_y_of_digit_display, 320,200);
[UIView commitAnimations];
}
答案 1 :(得分:1)
您可以使用UIAnimations从UIView属性的任何更改中创建动画。您可以通过将其frame.origin.y设置为480来隐藏UIView,然后更改矩形并将其包装在UIAnimation中。
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.75];
CGRect newFrame = newSubView.frame;
newFrame.origin.y -= newSubView.frame.size.height;
newSubView.frame = newFrame;
[UIView commitAnimations];
<强>更新强>
如果您的目标是iOS 4.0及更高版本,则应使用新的UIAnimations界面。
UIViewAnimationOptions options = UIViewAnimationOptionCurveLinear;
[UIView animateWithDuration:0.75 delay:0 options:options
animations:^(){
CGRect newFrame = newSubView.frame;
newFrame.origin.y -= newSubView.frame.size.height;
newSubView.frame = newFrame;
}
completion:^(BOOL finished){
//Do something upon completion
}];