6

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

4

6 回答 6

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)];
于 2015-08-26T16:05:20.547 回答
3

看看这个例子: http ://danielbeard.wordpress.com/2012/09/17/adding-a-uiscrollview-to-a-uiview-ios/

于 2012-11-28T09:39:15.283 回答
2

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

CATiledLayer 用于提高高分辨率图像或大型照片集的分页、平移和缩放性能。

于 2012-11-28T09:35:36.507 回答
0

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

     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;
        }
    }

我希望你明白 ;-)

于 2012-11-28T09:43:30.437 回答
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)];
}
于 2016-12-03T09:22:47.700 回答
0

我知道这个线程很旧,但我认为在滚动视图中加载大量图像的问题仍然存在。如果您想在滚动视图中加载图像,您将面临内存使用问题。图像很可能会占用您设备的大部分内存。唯一的做法是创建类似于 uitableview 的可重用滚动视图 - 具有准备显示的视图池(带有图像)的滚动视图。这可能非常复杂。

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

这是一个来源:https ://github.com/sumofighter666/ReusableScrollView

于 2018-06-24T21:24:41.043 回答