我有一个视图,我想像这个插图一样翻转它。
我的当前解决方案:
[UIView animateWithDuration:duration
animations:^{
[someView.layer setAffineTransform:CGAffineTransformMakeScale(1, 0)];
}];
这个解决方案的问题在于,顶部边缘向下移动,而底部边缘正在向上移动。我希望顶部边缘保持不变,底部边缘向上/远离移动,就像这个插图一样。
编辑:就像那些猫门一样,哈哈。你用位于顶部的铰链将一个圆盘/正方形面板推向远离你的方向。
编辑2:解决方案。
CGFloat someViewHeight = self.someView.frame.size.height;
CATransform3D baseTransform = CATransform3DIdentity;
baseTransform.m34 = - 1.0 / 200.0;
self.someView.layer.zPosition = self.view.frame.size.height * 0.5;
self.someView.layer.transform = baseTransform;
CATransform3D rotation = CATransform3DMakeRotation(- M_PI_2, 1.0, 0.0, 0.0);
CATransform3D firstTranslation = CATransform3DMakeTranslation(0.0, someViewHeight * 0.5, 0.0);
CATransform3D secondTranslation = CATransform3DMakeTranslation(0.0, - someViewHeight * 0.5, 0.0);
self.someView.layer.transform = CATransform3DConcat(CATransform3DConcat(firstTranslation, CATransform3DConcat(rotation, secondTranslation)), baseTransform);
花了一些时间,我才明白[UIView animateWithDuration:]
会以某种方式来动画化视角,所以动画将缩小视图并做一些我无法解释的奇怪事情。因此,我现在自己进行动画处理,仅每次更改角度。