如何在 UIScrollView 中缩放 UIImageView?
How to zoom a UIImageView within a UIScrollView?
我在 UIScrollView 中有一个 UIImageView,我可以垂直滚动,但不能水平滚动,因为我设置了内容大小。这正是我想要的。
但是,我似乎无法放大和缩小。我设置了最小和最大缩放比例,但它不起作用。
谁能告诉我为什么?
谢谢。
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
//self.scrollView.scrollEnabled = YES;
CGSize scrollableSize = CGSizeMake(self.view.frame.size.width, self.view.frame.size.height);
[self.scrollView setContentSize:scrollableSize];
UIImageView *tempImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"test.png"] ];
tempImageView.frame = CGRectMake(0, 0, self.scrollView.frame.size.width, self.view.frame.size.height);
self.scrollView.backgroundColor = [UIColor blackColor];
self.scrollView.minimumZoomScale = 1.0 ;
self.scrollView.maximumZoomScale = tempImageView.image.size.width / self.scrollView.frame.size.width;
self.scrollView.zoomScale = 1.0;
self.scrollView.delegate = self;
[self.scrollView addSubview:tempImageView];
}
您必须实现以下缩放委托方法:
-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return self.imageView;
}
并确保将 self.imageView
添加到 self.scrollView
中。
它应该是这样的:
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
CGSize scrollableSize = CGSizeMake(self.view.frame.size.width, self.view.frame.size.height);
[self.scrollView setContentSize:scrollableSize];
self.imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"test.png"] ];
self.imageView.frame = CGRectMake(0, 0, self.scrollView.frame.size.width, self.view.frame.size.height);
self.scrollView.backgroundColor = [UIColor blackColor];
self.scrollView.minimumZoomScale = 1.0 ;
self.scrollView.maximumZoomScale = self.imageView.image.size.width / self.scrollView.frame.size.width;
self.scrollView.delegate = self;
[self.scrollView addSubview:self.imageView];
}
试试这个 试试这个
[scroll setUserInteractionEnabled:YES];
而且你的最大缩放比例很奇怪。尝试使用 2,0 进行测试。
要使缩放工作,您需要提供一个委托方法,returns您希望缩放的视图:
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return self.imageView
}
您还需要将 tempImageView
分配给 属性,以便您可以在此处引用它。如果你不想在 属性 中坚持下去,你将需要一些其他方式来识别视图,例如scrollView.subviews[0]
如果它是唯一的子视图。
我在 UIScrollView 中有一个 UIImageView,我可以垂直滚动,但不能水平滚动,因为我设置了内容大小。这正是我想要的。
但是,我似乎无法放大和缩小。我设置了最小和最大缩放比例,但它不起作用。
谁能告诉我为什么?
谢谢。
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
//self.scrollView.scrollEnabled = YES;
CGSize scrollableSize = CGSizeMake(self.view.frame.size.width, self.view.frame.size.height);
[self.scrollView setContentSize:scrollableSize];
UIImageView *tempImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"test.png"] ];
tempImageView.frame = CGRectMake(0, 0, self.scrollView.frame.size.width, self.view.frame.size.height);
self.scrollView.backgroundColor = [UIColor blackColor];
self.scrollView.minimumZoomScale = 1.0 ;
self.scrollView.maximumZoomScale = tempImageView.image.size.width / self.scrollView.frame.size.width;
self.scrollView.zoomScale = 1.0;
self.scrollView.delegate = self;
[self.scrollView addSubview:tempImageView];
}
您必须实现以下缩放委托方法:
-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return self.imageView;
}
并确保将 self.imageView
添加到 self.scrollView
中。
它应该是这样的:
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
CGSize scrollableSize = CGSizeMake(self.view.frame.size.width, self.view.frame.size.height);
[self.scrollView setContentSize:scrollableSize];
self.imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"test.png"] ];
self.imageView.frame = CGRectMake(0, 0, self.scrollView.frame.size.width, self.view.frame.size.height);
self.scrollView.backgroundColor = [UIColor blackColor];
self.scrollView.minimumZoomScale = 1.0 ;
self.scrollView.maximumZoomScale = self.imageView.image.size.width / self.scrollView.frame.size.width;
self.scrollView.delegate = self;
[self.scrollView addSubview:self.imageView];
}
试试这个 试试这个
[scroll setUserInteractionEnabled:YES];
而且你的最大缩放比例很奇怪。尝试使用 2,0 进行测试。
要使缩放工作,您需要提供一个委托方法,returns您希望缩放的视图:
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return self.imageView
}
您还需要将 tempImageView
分配给 属性,以便您可以在此处引用它。如果你不想在 属性 中坚持下去,你将需要一些其他方式来识别视图,例如scrollView.subviews[0]
如果它是唯一的子视图。