gpt4 book ai didi

ios - 如何避免在 iOS 中对 CATransform3D 旋转进行倾斜/翻转?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:02:29 24 4
gpt4 key购买 nike

我在 View 中使用了下面的 3dRotation 函数。但我不想在 View 上倾斜/翻转,我只想在 View 上左/右/上/下移动。

我如何避免在 View 中倾斜和翻转旋转?

- (void)Move3dPan:(UIPanGestureRecognizer *)gesture
{
if (gesture.state == UIGestureRecognizerStateChanged)
{
CGPoint displacement = [gesture translationInView:self.view];
CATransform3D currentTransform = self.popUpView.layer.sublayerTransform;

if (displacement.x==0 && displacement.y==0)
{
// no rotation, nothing to do
return;
}

CGFloat totalRotation = sqrt(displacement.x * displacement.x + displacement.y * displacement.y) * M_PI / 360.0;
CGFloat xRotationFactor = displacement.x/totalRotation;
CGFloat yRotationFactor = displacement.y/totalRotation;

CATransform3D rotationalTransform = CATransform3DRotate(currentTransform, totalRotation,
(xRotationFactor * currentTransform.m12 - yRotationFactor * currentTransform.m11),
(xRotationFactor * currentTransform.m22 - yRotationFactor * currentTransform.m21),
(xRotationFactor * currentTransform.m32 - yRotationFactor * currentTransform.m31));

[CATransaction setAnimationDuration:0];

self.popUpView.layer.sublayerTransform = rotationalTransform;

[gesture setTranslation:CGPointZero inView:self.view];
}
}

最佳答案

-(void) startAnimatingCupView

{

[self stopAnimatingCupView];

timer = [NSTimer scheduledTimerWithTimeInterval:0.8 repeats:true block:^(NSTimer * _Nonnull timer) {

[self animateCupView];

}];

}


-(void) animateCupView{

[UIView animateWithDuration:0.4 animations:^{

self.imgCup.transform = CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(180));

} completion:^(BOOL finished) {

[UIView animateWithDuration:0.4 animations:^{

self.imgCup.transform = CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(360));

}];

}];

}


-(void) stopAnimatingCupView{

if (timer != nil) {

[timer invalidate];

timer = nil;

}

[self.imgCup.layer setTransform:CATransform3DIdentity];

}

我希望这能奏效

关于ios - 如何避免在 iOS 中对 CATransform3D 旋转进行倾斜/翻转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41054948/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com