Cocoa touch 设置视图动画&;它的子视图是分开的
我有一个视图Cocoa touch 设置视图动画&;它的子视图是分开的,cocoa-touch,uiview,uiviewanimation,uianimation,Cocoa Touch,Uiview,Uiviewanimation,Uianimation,我有一个视图界面,其中包含一个子视图触摸轮。单击界面上的最小化按钮我想执行转换并将视图发送到屏幕的右下角。问题是,我想“分离”touchWheel视图,并将其与父视图、界面一起单独发送到角落,后面跟着(&实际上是淡出) 当我尝试这个时,我遇到了一个问题。我的动画一开始运行良好&touchWheel会根据需要发送到下角。当touchWheel到达目的地的一半时,我会设置界面的动画,使其跟随touchWheel 一旦界面开始设置动画,它就会控制触摸轮&触摸轮改变路线 似乎界面仍然保留对触摸轮的控制,
界面
,其中包含一个子视图触摸轮
。单击界面上的最小化按钮
我想执行转换并将视图发送到屏幕的右下角。问题是,我想“分离”touchWheel视图,并将其与父视图、界面
一起单独发送到角落,后面跟着(&实际上是淡出)
当我尝试这个时,我遇到了一个问题。我的动画一开始运行良好&touchWheel
会根据需要发送到下角。当touchWheel
到达目的地的一半时,我会设置界面的动画,使其跟随touchWheel
一旦界面
开始设置动画,它就会控制触摸轮
&触摸轮
改变路线
似乎界面
仍然保留对触摸轮
的控制,因为它是它的父视图
- (void)hideInterfaceButtonClicked : (id) sender
{
[[NSNotificationCenter defaultCenter] postNotificationName:@"RemoveGrey" object:self];
//Remove Views & transform
[touchWheel removeViews];
interfaceHidden = YES;
//Send Interface to corner
[UIView animateWithDuration:1.25
delay:0.0
options:UIViewAnimationCurveEaseIn
animations:^{
// Move to the right
CGAffineTransform translateInterface = CGAffineTransformMakeTranslation(437,200);
// Scale
CGAffineTransform scale = CGAffineTransformMakeScale(0.135,0.135);
// Apply them to the view
self.transform = CGAffineTransformConcat(scale, translateInterface);
self.alpha = 0.0;
} completion:^(BOOL finished) {
NSLog(@"Animation Has Stopped");
[[NSNotificationCenter defaultCenter] postNotificationName:@"hiddenInterfaceViewNeeded" object:self]; //after MoveView finishes
}];
}
将touchWheel
子视图设置为界面以外的内容会产生其他问题,这会使事情进一步复杂化
有没有办法绕过这个问题?非常感谢任何提示:)您可以执行以下操作:
将touchWheel
移动到界面的superview,使用convertRect:toView:
重新计算其框架,使touchWheel
看起来具有相同的窗口坐标
将两个视图设置为其最终位置的动画
在动画的完成块中,执行与步骤1相反的操作:使touchWheel
成为interface
的子视图,重新计算其帧
这看起来并不太复杂,但有一个警告:您可能希望暂时禁用“最大化”按钮(或任何适当的控件),以防止在动画期间执行最大化操作。否则,这种方法将导致不可预测的结果。这也是我最后提出的解决方案:)@costique,请您回答这里发布的类似问题。。