单击动画时调整视图大小

时间:2014-08-12 07:15:03

标签: ios objective-c core-animation

我正在尝试创建一个用户界面,当我点击它时会动画。

这是我的草图:

enter image description here

它从mapview开始,小到左侧草图。剩下的就是桌面视图。现在,当我点击地图视图时,它会像右侧草图一样滑到底部,这样mapview就会填满屏幕。当我点击小桌面视图时,反之亦然。

我怎样才能做到这一点?

我想过创建一个View然后将mapview和tableview添加为子视图,但后来我不知道如何设置动画。到目前为止做了一些真正简单的动画。

有人能指出我正确的方向吗?

5 个答案:

答案 0 :(得分:2)

  NSNumber isMapExpanded = 0;

  - (void) expandMap 
    {
       [UIView animateWithDuration:1.0
                             delay:0.2
                           options:nil
                        animations:^{
                                 if([isMapExtended integerValue] == 0)
                                 {
                                     mapview.frame = CGRectMake(mapview.frame.origin.x, mapview.frame.origin.y, mapview.frame.size.width, mapview.frame.size.height + heightTobeExpanded);
                                     tableView.frame = CGrectMake(tableView.frame.origin.x, tableView.frame.origin.y - heightTobeExpanded, tableView.frame.size.width, tableView.frame.size.height + heightTobeExpanded);
                                 }  
                                 else if([isMapExtended integerValue] == 1)
                                 {
                                     mapview.frame = CGRectMake(mapview.frame.origin.x, mapview.frame.origin.y, mapview.frame.size.width, mapview.frame.size.height - heightTobeExpanded);
                                     tableView.frame = CGrectMake(tableView.frame.origin.x, tableView.frame.origin.y + heightTobeExpanded, tableView.frame.size.width, tableView.frame.size.height - heightTobeExpanded);
                                 }     
                           }
             completion:nil];
  }

答案 1 :(得分:1)

类似于:

[UIView animateWithDuration:1.0
                      delay:0
                    options:nil
                 animations:^{
                     map.frame = CGRectMake(0,0,newheight,320);
                     table.frame = CGrectMake(0,newheight,screenheight-newheight, 320);
                 }
                 completion:nil];

你可以在你的点击方法中调用类似的东西。这只是一个例子 - 您不应该在您的应用程序中使用硬编码数字:)

答案 2 :(得分:1)

请尝试以下代码: -

 [UIView beginAnimations:@"Expand MApview" context:nil];    
 [tblView setFrame:CGRectMake(0, self.view.frame.size.height-50, tblView.frame.size.width,tblView.frame.size.height)];
 [mapview setFrame:CGRectMake(0,0,mapview.frame.size.width,self.view.frame.size.height-50)];
 [UIView setAnimationDelay:2];
 [UIView commitAnimations];

答案 3 :(得分:1)

  1. 如您所说,将地图和表格放在超视图中。
  2. 点击后,您可以使用以下内容:
  3.   

    [UIView animateWithDuration:0.5动画:^ {

        map.frame = CGRectMake(x,y,width,newHeight); //Set the frame to be with the new map height
        tableView.frame = CGRectMake(x,NewYCoordinate,width,height);  //Move the tableView down
    }];
    

答案 4 :(得分:0)

- (void) changeFrameBetweenMapAndTable
{
    [UIView animateWithDuration:1.0
                      delay:0.5
                    options:nil
                 animations:^{
                     CGRect mapRect = mapview.frame;
                         mapview.frame = tableView.frame;
                         tableView.frame = mapRect;
                 }
                 completion:nil];
}