作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最近偶然发现了一个问题,我有一个可以由用户旋转的 View 。然而,在旋转过程中,它应该大 10%(按比例放大)。
我希望缩放是动画的,但旋转是立即可见的,因为我在手势识别器的回调中将其设置为没有动画。
问题:是否可以在不拦截动画缩放的情况下更新 CGAffineTransform
的旋转,或者是否无法创建可缩放的环绕 View ?
最佳答案
编辑:
我认为用于缩放的包装 View 是最不容易出错的方法。
如果您迫切希望避免这种情况,您可以尝试使用 NSTimer 手动创建缩放动画。也许如果您先查询当前的变换值,然后修改它,而不是用独立创建的变换值(用于旋转和缩放)替换它,它就可以工作。
我认为隐式 UIView 动画会在开始时计算所有后续值,因此这会扰乱您的旋转。
另一种方法是在缩放时锁定旋转。缺点是缩放和旋转不能同时进行。不管怎样,你可以创建一个 iVar 或属性,比如 rotationLocked
并做某事。像这样:
- (void)handlePan:(UIPanGestureRecognizer *)gr
{
if (gr.state == UIGestureRecognizerStateBegan)
{
self.rotationLocked = YES;
[UIView animateWithDuration:.2 animations:^{
[self scaleView];
}completion:^{ self.rotationLocked = NO; };
}
if (gr.state == UIGestureRecognizerStateChanged)
{
if (!self.rotationLocked){
// do the rotation
}
if (gr.state == UIGestureRecognizerStateEnded)
{
// do something else
}
关于iphone - 如何为 View 转换的一部分设置动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13107685/
我是一名优秀的程序员,十分优秀!