如何在iOS的第二个Scrollview中显示FirstScrollview图像?

时间:2014-11-12 06:16:40

标签: ios iphone uiscrollview

我是iOS开发中的新手我制作了一个应用程序,包含两个Scrollview,一个是大尺寸,第二个是小尺寸,显示在我的图像中,两个都包含相同的图像但首先是大尺寸,第二个是小的尺寸。在这里我想像我选择任何图像一样从我的第二个Scrollview意味着小Scrollview然后该图像直接显示在Big ScrollView中像在iOS中的ViewPager或SegmentedControll如何可能,如果有可能那么请给我解决方案在这里我的Scrollview的图片是。

enter image description here

这里我想要的是当我选择From Bottom Scrollview然后我想要在Upp​​er Scrollview中显示该图像,这里两个Scrollview都包含图像阵列并且两者都是相同的。

此处用于在scrollview中设置imageview的代码

for(int index=0; index < [self.imagesa count]; index++)
{
    NSDictionary *dict=[self.imagesa objectAtIndex:index];
    NSString *image=[dict valueForKey:@"link"];
    bigImage=[[UIImageView alloc]init];
    bigImage.userInteractionEnabled=TRUE;
    bigImage.bounds=CGRectMake(0, 0, self.zoomScroll.frame.size.width, self.zoomScroll.frame.size.height);
    bigImage.frame=CGRectMake(index * self.zoomScroll.frame.size.width, 0, self.zoomScroll.frame.size.width, self.zoomScroll.frame.size.height);
    [bigImage setMultipleTouchEnabled:YES];
    [bigImage setTag:1];
    [bigImage sd_setImageWithURL:[NSURL URLWithString:image] placeholderImage:[UIImage imageNamed:@"1.png"]];
    [bigImage setUserInteractionEnabled:TRUE];
    [self.objectarray insertObject:bigImage atIndex:index];
    CGSize scrollViewSize=CGSizeMake(self.zoomScroll.frame.size.width*[self.objectarray count], self.zoomScroll.frame.size.height);
    [self.zoomScroll setContentSize:scrollViewSize];
    [self.zoomScroll addSubview:bigImage];
    self.zoomScroll.clipsToBounds=YES;
    [self.zoomScroll addSubview:[self.objectarray objectAtIndex:index]];
}

这里bigimage是imageview,zoomScroll是Scrollview,Code for Second意味着小Scrollview只有imageview的大小,而scrollview是不同的。

这里选择小图像代码如

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch * touch = [[event allTouches] anyObject];
for(int index=0;index<[self.imageArray count];index++)
{
    UIImageView *imgView = [self.imageArray objectAtIndex:index];
    NSLog(@"x=%f,y=%f,width =%f,height=%f",imgView.frame.origin.x,imgView.frame.origin.y,imgView.frame.size.width,imgView.frame.size.height);
    NSLog(@"x= %f,y=%f",[touch locationInView:self.view].x,[touch locationInView:self.view].y) ;
    if(CGRectContainsPoint([imgView frame], [touch locationInView:self.scrollView]))
    {
        [self ShowDetailView:imgView];
        break;
    }
   }
 }

和ShowDetailView方法代码是

-(void)ShowDetailView:(UIImageView *)imgView
{
 bigImage.image = imgView.image;
 [self.zoomScroll addSubview:bigImage];
}

此方法也在我的Differnt类文件中,在这里我导入了该类。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[self.nextResponder touchesBegan:touches withEvent:event];
}

2 个答案:

答案 0 :(得分:1)

有一个名为iCarousel的第三方库,设置了两个轮播视图,它们甚至可以像桌面视图一样工作,您可以轻松转换索引并轻松获取触摸事件。

https://github.com/nicklockwood/iCarousel

答案 1 :(得分:1)

在您的小滚动视图图片中确定。选择所有图像的标签。

 smallimage.tag = index;

并在此方法中

 -(void)ShowDetailView:(UIImageView *)imgView
 {
         [self.zoomScroll setContentOffset:CGPointMake(imgView.tag * self.zoomScroll.frame.size.width, 0) animated:YES];
 }