2014-12-10 115 views
0

我有一个大约2/3的屏幕区域的屏幕区域,在这个区域有两个对象一个MKMapView和一个UITableView。按下按钮时,我想用小小的大小调整动画来调换两者之间的大小。该CGRects计算,像这样:UIView动画随机展开

//Calculate initial screen item sizes 
int mapTypeButtH=20; 

int baseX=5; 
int baseY=self.but_mapHybrid.frame.origin.y+self.but_mapHybrid.frame.size.height; 
int baseW=310; 
int availableSpace=self.view.frame.size.height-baseY; 

posMapMinor=CGRectMake(baseX,baseY,baseW,(availableSpace/10)*2); 
posListMajor=CGRectMake(baseX,baseY+((availableSpace/10)*2),baseW,(availableSpace/10)*8); 

posMapMajor=CGRectMake(baseX,baseY,baseW,(availableSpace/10)*8); 
posListMinor=CGRectMake(baseX,baseY+((availableSpace/10)*8),baseW,(availableSpace/10)*2); 

这一切都出来罚款,我检查了它产生的值,然后按下按钮我曾尝试配置来执行动画本身的所有方式,还没有工作正常。目前的尝试是,像这样:

[UIView animateWithDuration:.5 delay:0 options: UIViewAnimationOptionCurveEaseOut animations:^{ 
    self.mapView.frame=posMapMinor; 
}completion: ^(BOOL finished){ 
    [UIView animateWithDuration:.5 delay:0 options: UIViewAnimationOptionCurveEaseOut animations:^{ 
     self.tbl_actions.frame=posListMajor; 
    }completion: ^(BOOL finished){ 

    }]; 
}]; 

似乎无论什么我尝试当我执行的动画,它会以某种方式出现故障,不管是只有一个动画播放,或两者的演奏,然后回弹至位置。我错过了文档中的一些基本教训吗?这似乎是一项基本任务。任何关于这个问题的提示或想法将不胜感激。

更新:我已经进一步缩小了这个问题,它会出现,如果只有一个动画被激发,动画播放正常,视图保持原位。但是,如果两者同时被呼叫或者被链接(即使拖延),两者都可以放松并且视图可以回到它们所在的位置。结果是奇怪的排序闪烁,然后什么也没有。

回答

0

我知道是什么导致了这个问题,但是我发现的解决方案是将UITableView包装在UIView中,并在UIView上执行动画。一旦我做到了,它完美运作。