我有一个观点,我想以两种方式改变。首先,我想在y轴上移动它。然后,我想放大它。
但是,当我使用以下代码时,首先移动对象,然后在缩放时将其移回原始位置。
有没有办法一次应用这两个转换而不取消第一个?
很抱歉,如果这是基本的,但非常感谢任何帮助!
[UIView animateWithDuration:animationDuration
delay:0
options:UIViewAnimationOptionCurveEaseIn
animations:^{
currentCover.transform = CGAffineTransformMakeTranslation(0, 0-keyboardTop+35);
}
completion:^(BOOL finished) {
[UIView animateWithDuration:animationDuration
delay:0
options:UIViewAnimationOptionCurveEaseIn
animations:^{
[currentCover setTransform:CGAffineTransformMakeScale (1.3, 1.3)];
}
completion:^(BOOL finished) { }
];
}
];
答案 0 :(得分:1)
你应该将一个变换乘以另一个变换。每个变换(缩放和平移)都是变换矩阵。要合并它们,在使用它们之前,只需将它们相互重叠。乘法的顺序决定了变换的应用顺序
答案 1 :(得分:1)
我也有类似的问题,我的观点会回到原来的位置。
CGAffineTransformMakeTranslation
的{p> Documentation读取“它从x和y值构造一个新的转换矩阵,指定移动原点的数量。”我认为它不适用于实际转型。
我认为您宁可通过致电CGAffineTransformTranslate()
来应用翻译。至少它对我有用!!
答案 2 :(得分:1)
这里我们要创建您想要一起做的两个更改(CGAffineTransform' s),并将转换应用于视图。
CGAffineTransform translate = CGAffineTransformMakeTranslation(0, 0-keyboardTop+35);
CGAffineTransform scale = CGAffineTransformMakeScale(1.3, 1.3);
CGAffineTransform transform = CGAffineTransformConcat(translate, scale);
[UIView animateWithDuration: animationDuration
delay:0.0
options:UIViewAnimationOptionCurveEaseIn
animations:^{
currentCover.transform = transform;
}completion:^(BOOL finished){
}];