如何在单个UIView中为两个不同的UIScrollview启用缩放?

时间:2013-09-19 07:14:25

标签: ios objective-c iphone uiscrollview zooming

我在单个视图上显示两个图像,其中两个图像都必须具有缩放功能。我的页面高度约为1000像素,图像必须显示在页面的顶部和底部。为此,我在scroll views添加了两个不同的滚动视图和添加的图像视图。

现在缩放对第二张图像正常工作。但是,缩小后,第一张图像会显示在scroll view的左上角。似乎有两个图像。

以下是我正在使用的委托方法:

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
    return [[scrollView subviews] objectAtIndex:0];
}

我有什么遗失的吗?或者,如果单页有两个scroll views,则无法实现缩放。

1 个答案:

答案 0 :(得分:4)

当单页有两个滚动视图时,以下是用于启用缩放的代码。

  

//创建第一个ImageView

image1 =[[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 320, 220)];
image1.image = [UIImage imageNamed:@"image1.png"];
image1.contentMode = UIViewContentModeScaleToFill;
  

//为Scrollview 1创建和设置值

scroll1 =[[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 220)];
scroll1.contentSize = image1.frame.size;
[scroll1 setMinimumZoomScale:1.0];
[scroll1 setMaximumZoomScale:4.0];
scroll1.delegate = self;
scroll1.clipsToBounds = YES;
scroll1.tag =0;
[scroll1 addSubview:image1];
image1.userInteractionEnabled =YES;
scroll1.zoomScale = 1;
[self.view addSubview:scroll1];
  

第二个Scrollview和ImageView

     

//创建第二个ImageView

image2 =[[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 320, 260)];
image2.image = [UIImage imageNamed:@"image2.png"];
image2.contentMode = UIViewContentModeScaleToFill;
  

//创建第二个ScrollView

scroll2 =[[UIScrollView alloc] initWithFrame:CGRectMake(0, 220, 320, 260)];
scroll2.contentSize = image2.frame.size;
[scroll2 setMinimumZoomScale:1.0];
[scroll2 setMaximumZoomScale:4.0];
scroll2.delegate = self;
scroll2.clipsToBounds = YES;
scroll2.tag =1;
[scroll2 addSubview:image2];

image2.userInteractionEnabled =YES;
scroll2.zoomScale = 1;
[self.view addSubview:scroll2];

这对你有帮助,因为它已经为我工作了。

委托方法如下:

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
    if (scrollView.tag ==0) {
        return image1;
    }
    else return image2;
}