【发布时间】:2014-04-25 11:44:37
【问题描述】:
我有一个视图,我想像这里的插图一样翻转。
我目前的解决方案:
[UIView animateWithDuration:duration
animations:^{
[someView.layer setAffineTransform:CGAffineTransformMakeScale(1, 0)];
}];
这个解决方案的问题是上边缘向下移动,而下边缘向上移动。我希望顶部边缘保持不变,而底部边缘像插图一样向上/远离。
编辑:就像那些猫门,哈哈。你用顶部的铰链将圆盘/方形表面推开。
EDIT2:解决方案。
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:] 会为视角或其他东西设置动画,所以动画会缩小视图并做一些我无法解释的奇怪事情。所以我现在自己制作动画,每次只改变角度。
【问题讨论】:
标签: ios objective-c cocoa-touch uiview