如何在iOS中的UIScrollView中显示多个图像

时间:2012-11-28 09:30:21

标签: iphone imageview scrollview

我正在制作一个iPhone应用程序,其中我需要在UIScrollView中显示一些图像,左右两侧将有两个按钮,用户可以点击按钮,它将显示下一个或上一个图像。同样在底部有一个按钮,当用户点击该按钮时,它将显示我们在scrollview中选择的图像。我想知道如何在滚动视图内显示多个图像,同时选择底部按钮,如何在scrollview中找到哪个图像。

6 个答案:

答案 0 :(得分:5)

danielbeard.wordpress.com的一个例子

如果您的图片名称不仅仅是数字:

    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];

    [scrollView setPagingEnabled:YES];
    [scrollView setAlwaysBounceVertical:NO];

    NSArray *imagesArray = [NSArray arrayWithObjects:@"img1.png", @"img2.png", @"img3.png", nil];

    for (int i = 0; i < [imagesArray count]; i++)
    {
        CGFloat xOrigin = i * scrollView.frame.size.width;

        UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(xOrigin, 0, scrollView.frame.size.width, scrollView.frame.size.height)];
        [imageView setImage:[UIImage imageNamed:[imagesArray objectAtIndex:i]]];
        [imageView setContentMode:UIViewContentModeScaleAspectFit];

        [scrollView addSubview:imageView];
    }

    [scrollView setContentSize:CGSizeMake(scrollView.frame.size.width * [imagesArray count], scrollView.frame.size.height)];

答案 1 :(得分:3)

答案 2 :(得分:2)

Apple.developer PhotoScroller演示了如何使用嵌入式UIScrollViews和CATiledLayer创建丰富的用户体验,以便显示和分页可以单独平移和缩放的照片。

CATiledLayer用于提高使用高分辨率图像或大量照片进行分页,平移和缩放的性能。

答案 3 :(得分:0)

你只是先    在运行时和图像上创建一个新视图,并为所有视图分配标签,如1000或100,并在标签值上增加,然后将此视图添加到scrollview和两个左右移动按钮,并进行出口操作并添加所有scrollview子视图像这样的可变数组

     indexStart=100;
 UIView *AddView=[[UIView alloc]initWithFrame:CGRectMake(55, 0, 100, 100)];

                AddView.tag=indexStart;
                btnTap.tag=indexStart;

                UIImageView *imgview=[[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];



                [AddView addSubview:imgview];

                imgview.image=image;
                imgview.tag=1000;
               [ScrollView addSubview:AddView];
                [imgArray addObject:AddView];

你使用循环来执行此操作,在左右按钮上使用此代码,在此代码中,editImgeView是左右按钮之间的图像视图,您可以在其中显示图像,只需简单的indexstart ++或 - 如果用户选择右或左按钮

for (int index = 0; index < [imgAddArrayAfter count]; index ++ ) {
         NSLog(@"index %d",index);
        UIView *vc=[imgArray objectAtIndex:index];
        NSLog(@"view tag %d",vc.tag);
        if(vc.tag == indexStart)
        {

            UIImageView *modalView=(UIImageView *)  [vc viewWithTag:1000];
            editImgeView.image=modalView.image;
        }
    }

我希望你理解; - )

答案 4 :(得分:0)

- (void)viewDidLoad
{
    [super viewDidLoad];
    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
    scrollView.contentSize = CGSizeMake(320, 465);

    [scrollView setScrollEnabled:YES];
    [scrollView setPagingEnabled:YES];
    [scrollView setAlwaysBounceVertical:NO];
    [self.view addSubview:scrollView];

    NSMutableArray *arrImage = [NSMutableArray arrayWithObjects:@"food1.jpeg", @"food2.jpeg", @"food3.jpeg",@"food4.jpeg", @"food5.jpeg", @"food6.jpeg",@"food7.jpeg", @"food8.jpeg", @"foo9.jpeg",@"food10.jpeg", @"food11.jpeg", @"food12.jpeg",@"food13.jpeg", @"food14.jpeg", @"food15.jpeg", @"food16.jpeg", nil];

    for (int i = 0; i < [arrImage count]; i++)
    {
        CGFloat xOrigin = i * scrollView.frame.size.width;

        UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(xOrigin, 0, scrollView.frame.size.width, scrollView.frame.size.height)];
        [imageView setImage:[UIImage imageNamed:[arrImage objectAtIndex:i]]];
        [imageView setContentMode:UIViewContentModeScaleAspectFit];

        [scrollView addSubview:imageView];
    }

    [scrollView setContentSize:CGSizeMake(scrollView.frame.size.width * [arrImage count], scrollView.frame.size.height)];
}

答案 5 :(得分:0)

我知道该线程很旧,但是我认为在滚动视图中加载大量图像的问题仍然存在。如果要在滚动视图中加载图像,将面临内存使用问题。这些图像很可能会消耗设备的大部分内存。唯一的方法是创建可重复使用的滚动视图,该视图的工作方式类似于uitableview-具有准备显示的视图池(带有图像)的滚动视图。创建起来可能很复杂。

我创建了开源项目,以支持滚动视图中可重复使用的加载图像。这很容易实现。您需要调用几个委托和数据源方法,仅此而已。还有一个针对obj-c和swift的示例项目,以使其易于理解。请随时贡献。我希望它会有用。

以下是来源:https://github.com/sumofighter666/ReusableScrollView