所以我想显示一个用户可以缩放,平移和旋转的图像。
我希望图像适合屏幕(即保持纵横比,整个图像在屏幕上可见,图像的2个相对边缘触及屏幕边缘)。
当屏幕旋转时,我希望保持行为。
我玩了很多设置,但无法获得完美的行为。
我现在有什么:
UIScrollView
作为其子级UIImageView
。
- (void)viewDidLoad
{
[super viewDidLoad];
self.imageView.image = [UIImage imageNamed:@"test2.jpg"];
self.imageView.contentMode = UIViewContentModeScaleAspectFit;
self.imageView.clipsToBounds = YES;
}
- (void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
CGFloat width = self.scrollView.frame.size.width;
CGFloat height = self.scrollView.frame.size.height;
UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
if (UIInterfaceOrientationIsLandscape(orientation))
{
NSLog(@"Screen rotated to landscape orientation.");
self.scrollView.frame = CGRectMake(0, 0, height, width);
[self.scrollView setZoomScale:1 animated:YES];
}
else
{
NSLog(@"Screen rotated to portrait orientation.");
self.scrollView.frame = CGRectMake(0, 0, width, height);
[self.scrollView setZoomScale:1 animated:YES];
}
}
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return self.imageView;
}
当处于纵向模式时,此当前代码的行为对我来说非常有效。图像适合屏幕并居中。景观的行为并不像我想要的那样发挥作用。
我真的不明白为什么[self.scrollView setZoomScale:1 animated:YES];
会起作用。它似乎适用于任何大小的图像。也许我不太明白zoomScale的作用是什么?