我有一段代码,在iPad2上运行得非常完美,但在Retina iPad上缩放出现了问题。
我在两台iPad上都执行了该应用程序,但行为完全不同。在Retina iPad上,图像回到原始位置,变换没有发生。
该代码获取一组视图,将它们添加到临时视图中,调整临时视图的大小,然后再将这些视图添加回来,以便同时调整它们的大小。
我在两台iPad上都执行了该应用程序,但行为完全不同。在Retina iPad上,图像回到原始位置,变换没有发生。
该代码获取一组视图,将它们添加到临时视图中,调整临时视图的大小,然后再将这些视图添加回来,以便同时调整它们的大小。
- (IBAction)scaleParts:(UIPinchGestureRecognizer *)sender {
if (sender.state == UIGestureRecognizerStateBegan) {
self.tempCanvasView = [[UIView alloc] initWithFrame:self.canvas.bounds];
self.tempCanvasView.backgroundColor = [UIColor redColor];
for (UIView *view in [self.canvas subviews]) {
CGRect currentFrame = view.bounds;
CGRect newFrame = [view convertRect:currentFrame toView:self.tempCanvasView];
view.bounds = newFrame;
[self.tempCanvasView addSubview:view];
}
[self.canvas addSubview:self.tempCanvasView];
} else if (sender.state == UIGestureRecognizerStateChanged) {
self.tempCanvasView.transform = CGAffineTransformScale(self.tempCanvasView.transform, sender.scale, sender.scale);
sender.scale = 1.0;
} else if (sender.state == UIGestureRecognizerStateEnded) {
for (UIView *view in [self.tempCanvasView subviews]) {
CGRect currentFrame = view.bounds;
CGRect newFrame = [view convertRect:currentFrame toView:self.canvas];
view.frame = newFrame;
[self.canvas addSubview:view];
}
[self.tempCanvasView removeFromSuperview];
self.tempCanvasView = nil;
}
}