我正在尝试创建一个用户界面,当我点击它时会动画。
这是我的草图:
它从mapview开始,小到左侧草图。剩下的就是桌面视图。现在,当我点击地图视图时,它会像右侧草图一样滑到底部,这样mapview就会填满屏幕。当我点击小桌面视图时,反之亦然。
我怎样才能做到这一点?
我想过创建一个View然后将mapview和tableview添加为子视图,但后来我不知道如何设置动画。到目前为止做了一些真正简单的动画。
有人能指出我正确的方向吗?
答案 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)
[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];
}