我的屏幕区域大约占总屏幕区域的2/3,在这个区域中有两个对象:MKMapView和UITableView。按下按钮我想用两个调整大小的动画来交换两者之间的大小。 CGRects计算如下:
//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 :(得分:0)
我知道造成这个问题的原因,但是我找到的解决方案是将UITableView包装在UIView中并在UIView上执行动画。一旦我这样做,它就完美无缺。