Objective c 使用cgaffinetransformmakescale和cgaffinetransformmakerotation会使我的视图变形
我有一个简单的观点:Objective c 使用cgaffinetransformmakescale和cgaffinetransformmakerotation会使我的视图变形,objective-c,cgaffinetransform,Objective C,Cgaffinetransform,我有一个简单的观点: UIView *view = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)]; view.backgroundColor = [UIColor greenColor]; [self.view addSubview:view]; self.someView = view; 然后我做这个 [UIView animateWithDuration:10 dela
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
view.backgroundColor = [UIColor greenColor];
[self.view addSubview:view];
self.someView = view;
然后我做这个
[UIView animateWithDuration:10
delay:1
options:UIViewAnimationOptionCurveEaseInOut
animations:^{
self.someView.center = CGPointMake(CGRectGetWidth(self.view.bounds) - CGRectGetWidth(self.someView.frame) / 2, 150);
CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI);
self.someView.transform = CGAffineTransformScale(transform, 2, 0.5);
}
completion:^(BOOL finished) {
}];
执行此简单动画时,someView
变形。据我所知,它应该旋转并改变它的大小。我不明白为什么会发生这样的事情,我该怎么解决呢
谢谢问题在于如何为组合缩放和旋转设置动画。最终结果与分别设置它们的动画相同,但中间的帧不容易定义。因此,动画框架进行了猜测,而这并不是您所期望的 如果希望动画分别显示旋转和缩放,则需要将它们分别应用于视图层次。例如:
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
view.backgroundColor = [UIColor greenColor];
[self.view addSubview:view];
self.someView = view;
UIView *innerView = [[UIView alloc] initWithFrame:view.bounds];
innerView.backgroundColor = [UIColor blueColor];
[view addSubview:innerView];
self.someInnerView = innerView;
动画将分割变换:
[UIView animateWithDuration:10
delay:1
options:UIViewAnimationOptionCurveEaseInOut
animations:^{
self.someView.center = CGPointMake(CGRectGetWidth(self.view.bounds) - CGRectGetWidth(self.someView.frame) / 2, 150);
self.someView.transform = CGAffineTransformMakeRotation(M_PI);
self.someInnerView.transform = CGAffineTransformMakeScale(2, 0.5);
}
completion:^(BOOL finished) {
}];