在UIScrollView中使用多个UIImageView放大

时间:2012-08-28 16:00:09

标签: iphone ios uiscrollview uiimageview scrollview

当我缩放时我遇到了一些问题,当我缩放时,下一个UIImageView会在我放大的UIImageView之上。

我将UIImageView加载到我在控制器中调用的UIScrollView的子类中。 加载功能和滚动功能完美运行

第一个问题是当我放大下一个UIImageView超过我放大的那个时。

所以我试图把每个UIImageView放在一个UIView中,我把它放到ScrollView中,但是它做了同样的事情......

我遇到的第二个问题是当我放大时,我的滚动不再有效了。

- (UIView*)viewForZoomingInScrollView:(UIScrollView *)scrollView {
// Return the view that you want to zoom
NSLog(@"viewForZoomingInScrollView - current : %d",self.scrollPageControl.currentPage);
return [[[[self.productImageScrollView subviews]objectAtIndex:0] subviews]objectAtIndex:self.scrollPageControl.currentPage];
//return [[self.productImageScrollView subviews] objectAtIndex:0];
//return [self.productImageScrollView getSubViewsByPage:[NSNumber numberWithInteger:[self.scrollPageControl currentPage]]];

第一个返回返回UIView的UIImageView 第二次归还UIView 当我不使用UIView时,第三个返回UIImageView。

我看到了很多类似的问题,但我试过没有帮助过我...... 所以我打电话给你! Ty问我是不是很清楚。

3 个答案:

答案 0 :(得分:0)

尝试创建一个UIView *(可能称之为contentView)并将所有UIImageView作为子视图放到该contentView

然后,在

- (UIView*)viewForZoomingInScrollView:(UIScrollView *)scrollView {
    return contentView;
}

答案 1 :(得分:0)

您是否在方法中返回该视图?这是关键部分......

滚动视图仅缩放您在viewForZooming中返回的视图,因此如果您要返回其中一个图像,则其余图像将不会缩放。 我假设你按顺序添加它们,所以当缩放的那个放大时,下一个将保持静止,因此在当前的那个上面

尝试将所有图像添加到视图中,然后在viewForZoomingInScrollView中返回相同的视图:

答案 2 :(得分:0)

这是确定要缩放的对象的功能:

mask1 = df['tag'].isin([2,3])

out = np.setdiff1d(df['Unique_id'].unique(), df.loc[mask1, 'Unique_id'].unique()).tolist()
print (out)
['b', 'c', 'd']

然后,您可以将所需对象添加到该对象作为子视图,它将缩放到:

func viewForZooming(in scrollView: UIScrollView) -> UIView?{
    return scrollImageView
}