IOS/Objective-C:多个CGAffineTransformations的动画
IOS/Objective-C:Animation of Multiple CGAffineTransformations
我正在尝试执行同时执行三项操作的动画:平移、旋转和更改图像的大小。
我可以一次做两个,翻译和大小。但是,当我在以下代码末尾添加 rotation 时,它会被忽略。如果我把它放在代码的开头,大小的变化就会被忽略。我读到过您可以使用 view.transform 进行复合转换,但是,我无法实现它。
这是我当前的代码:
CGPoint destPoint = CGPointMake(-100,-50);
float radians =[self Degrees2Radians:-35];
[UIView animateWithDuration:2
animations:^{
//TRANSLATE
self.imageView.center = CGPointMake(self.imageView.center.x + destPoint.x, self.imageView.center.y + destPoint.y);
//ROTATE
self.imageView.transform = CGAffineTransformMakeRotation(radians);
//SCALE
self.imageView.transform = CGAffineTransformMakeScale(0.2, 0.2); // here the final size will be 20%
}
completion:nil
];
}
谁能推荐让这三件事同时发生的方法。
这是 swift 的一些代码,它使用了视图的变换 属性,但我没能在 Objective-C 中找到等效项。
view.transform= CGAffineTransform(scaleX: 1.5, y: 1.5)
view.transform = view.transform.rotated(by angle: CGFloat(45 * M_PI / 180))
提前感谢您的任何建议。
您可以对现有变换使用 CGAffineTransformRotate
函数来应用旋转。您还可以使用 CGAffineTransformTranslate
和 CGAffineTransformScale
来应用平移和缩放。请注意,操作顺序很重要。
例如,如果您有一个现有的变换 myTransform
,您可以像这样旋转它:
myTransform = CGAffineTransformRotate(myTransform, M_PI / 2);
操作 不会影响 输入变量,相反,它 return 是一个新的转换,因此请确保使用函数的 return 值.这就是为什么我以 myTransform = ...
.
开头的原因
有关更多信息,请访问 https://developer.apple.com/documentation/coregraphics/cgaffinetransform-rb5?language=objc。
我正在尝试执行同时执行三项操作的动画:平移、旋转和更改图像的大小。
我可以一次做两个,翻译和大小。但是,当我在以下代码末尾添加 rotation 时,它会被忽略。如果我把它放在代码的开头,大小的变化就会被忽略。我读到过您可以使用 view.transform 进行复合转换,但是,我无法实现它。
这是我当前的代码:
CGPoint destPoint = CGPointMake(-100,-50);
float radians =[self Degrees2Radians:-35];
[UIView animateWithDuration:2
animations:^{
//TRANSLATE
self.imageView.center = CGPointMake(self.imageView.center.x + destPoint.x, self.imageView.center.y + destPoint.y);
//ROTATE
self.imageView.transform = CGAffineTransformMakeRotation(radians);
//SCALE
self.imageView.transform = CGAffineTransformMakeScale(0.2, 0.2); // here the final size will be 20%
}
completion:nil
];
}
谁能推荐让这三件事同时发生的方法。
这是 swift 的一些代码,它使用了视图的变换 属性,但我没能在 Objective-C 中找到等效项。
view.transform= CGAffineTransform(scaleX: 1.5, y: 1.5)
view.transform = view.transform.rotated(by angle: CGFloat(45 * M_PI / 180))
提前感谢您的任何建议。
您可以对现有变换使用 CGAffineTransformRotate
函数来应用旋转。您还可以使用 CGAffineTransformTranslate
和 CGAffineTransformScale
来应用平移和缩放。请注意,操作顺序很重要。
例如,如果您有一个现有的变换 myTransform
,您可以像这样旋转它:
myTransform = CGAffineTransformRotate(myTransform, M_PI / 2);
操作 不会影响 输入变量,相反,它 return 是一个新的转换,因此请确保使用函数的 return 值.这就是为什么我以 myTransform = ...
.
有关更多信息,请访问 https://developer.apple.com/documentation/coregraphics/cgaffinetransform-rb5?language=objc。