如何为计算器编写自定义部分或子视图?

时间:2012-02-09 16:53:19

标签: objective-c ios xcode

我正在构建一个基本的计算器应用程序。计算器已经完全正常运行,具有基本功能。我遇到的问题是我在屏幕上跑出了空间来添加其他更高级的功能。理想情况下,我想要做的是创建某种子类和视图,当按下屏幕底部的按钮时,它会滑动到标签的底部(显示完成的计算)。换句话说,我想要一个具有更多运算符和计算选项的视图滑动到标签的底部,我不希望此视图覆盖标签中显示的任何数字。反正有没有实现这个目标?

2 个答案:

答案 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
        }];