【问题标题】:How to enable zoom for two different UIScrollview in single UIView?如何在单个 UIView 中启用两个不同 UIScrollview 的缩放?
【发布时间】:2013-09-19 07:14:25
【问题描述】:

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

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

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

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

我有什么遗漏吗?或者当单个页面有两个scroll views 时,这真的不可能启用缩放。

【问题讨论】:

  • 您是否尝试过 setContentOffSet?
  • 是的,我现在试过了,但同样的问题仍然存在。我可以缩放图像,但图像的副本也会出现在滚动视图的左角。
  • 你可以尝试使用滚动视图的标签值吗?
  • 我正在使用标签值,但即使我不使用它也不会影响缩放功能。
  • 问题与缩放功能无关。它在那里是因为我在重新加载页面时正在重新创建图像视图。

标签: ios objective-c iphone uiscrollview zooming


【解决方案1】:

这是当单个页面有两个滚动视图时启用缩放的代码。

//创建第一个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;
}

【讨论】:

    猜你喜欢
    • 2016-05-06
    • 1970-01-01
    • 2011-04-09
    • 1970-01-01
    • 1970-01-01
    • 2011-07-03
    • 2019-07-14
    • 1970-01-01
    相关资源
    最近更新 更多