如何使用嵌套的UIImageViews实现两个单独的UIScrollView ...只有一个是缩放

时间:2011-03-05 00:26:19

标签: iphone uiscrollview uiimageview nested zooming

好的,我一整天都在努力解决这个问题,而且我已经非常接近了。我试图创建一种方法来查看多个scrollView / imageView嵌套对,允许放大图像。

当视图加载时,只有一个scrollView占据整个屏幕,但是当按下一个按钮时,我将第一个scrollView的宽度减半,并取消隐藏另一个(其中有一个嵌套的imageView)在它旁边)。因此,存在分割视图效果,理想情况下,用户将能够分别捏合和缩放每个图像。

所以除了单独的捏合和缩放部分外,我还有所有工作。无论我在屏幕上捏什么,只有第一个scrollView缩放。所以,即使我正在触摸另一个scrollView,它仍然只影响第一个。

我在IB中设置了它们,然后以这种方式在viewDidLoad中设置它们:

[scrollView setBackgroundColor:[UIColor blackColor]];
[scrollView setCanCancelContentTouches:NO];
scrollView.clipsToBounds = YES;    // default is NO, we want to restrict drawing within our scrollview
scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite;

scrollView.minimumZoomScale = 1;
scrollView.maximumZoomScale = 5;
scrollView.delegate = self;
[scrollView setScrollEnabled:YES];

imageView3 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"monitor.JPG"]];

[scrollView addSubview:imageView3];
//[scrollView setFrame:CGRectMake(0, 0, 1024, 660)];


[scrollView1 setBackgroundColor:[UIColor blackColor]];
[scrollView1 setCanCancelContentTouches:NO];
scrollView1.clipsToBounds = YES;    // default is NO, we want to restrict drawing within our scrollview
scrollView1.indicatorStyle = UIScrollViewIndicatorStyleWhite;

scrollView1.minimumZoomScale = 1;
scrollView1.maximumZoomScale = 5;
scrollView1.delegate = self;
[scrollView1 setScrollEnabled:YES];

imageView31 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"monitor.JPG"]];

[scrollView1 addSubview:imageView31];

然后我隐藏并取消隐藏不同的scrollViews(我有40个取决于工具栏上的segmentedControl索引。我是朝着正确的方向前进吗?是否可以有两个可单独访问的scrollViews?

任何帮助都将不胜感激。

谢谢!

编辑:

好的,所以我通过并更新了clipToBunds位... DUH。它绝对让它看起来更好,但仍然没有解决问题。以下是我调用的代码,具体取决于所选索引:

-(void) pickedOne{


if(segment.selectedSegmentIndex == 0){

    [scrollView setFrame:CGRectMake(0, 0, 1024, 660)];
    [scrollView setContentSize:CGSizeMake(1024, 660)];
    scrollView.hidden = NO;

    scrollView1.hidden = YES;
    scrollView2.hidden = YES;
    scrollView3.hidden = YES;

}else if(segment.selectedSegmentIndex == 1){

    [scrollView setFrame:CGRectMake(0, 0, 512, 660)];
    scrollView.zoomScale = 1.0;
    scrollView.hidden = NO;


    [scrollView1 setFrame:CGRectMake(512, 0, 512, 660)];
    scrollView1.zoomScale = 1.0;
    scrollView1.hidden = NO;

            scrollView2.hidden = YES;
            scrollView3.hidden = YES;

}

这种方法有什么重大错误吗?

如果我捏缩放右侧滚动视图,它会使滚动视图变大,但(但不会增加scrollView2图像的大小)但是当你捏住内部时它会增加第一个scrollView图像的大小scrollViews ...奇怪

1 个答案:

答案 0 :(得分:1)

scrollView.clipsToBounds = NO;    // default is NO, we want to restrict drawing within our scrollview

这不是你想要的反面吗?将其设置为YES限制将绘图限制在滚动视图中。

听起来像你没有调整scrollview的大小。您要调整其内容或图像视图吗?您可以发布点按按钮时调用的代码吗?