使用UIViews创建水平滚动

时间:2015-03-19 20:36:16

标签: ios uitableview swift uiscrollview uicollectionview

首先从一个例子开始: What I'm trying to achieve

这是图像的底部部分,我可以通过滑动滚动底部的那些小tumbnails。

我正在寻找创建效果的方法,WhatsApp目前使用该效果来滚动一组图像。

我首先看一下如何使用UITableView,但我很快就碰到了关于UIScrollView和UICollectionView的主题。现在我的问题是,在这种情况下我应该使用什么?在这种情况下,最佳编程实践是什么。

我是否应该使用带有自定义单元格(UIViews)的UITableView,并以某种方式让它水平滚动。 我应该使用UIScrollView吗?关于显示太大图像的大多数教程,也许我不应该使用那个? 或者我应该使用UICollectionView?关于这个主题的大多数关于2d网格的教程,所以也许集合视图有点矫枉过正?

感谢您的帮助

2 个答案:

答案 0 :(得分:4)

您应该使用UICollectionView和UICollectionViewFlowLayout的组合。这篇文章为您提供了确切的代码。 Creating a UICollectionView programmatically

对于您的情况,在使用布局初始化collectionView之前,您需要在布局上设置滚动方向,以便可以水平滚动。像这样:

[layout setScrollDirection:UICollectionViewScrollDirectionHorizontal];

此外,您还需要设置集合视图单元格的大小以适合您的需要。

答案 1 :(得分:0)

您需要做的是使用scrollViewForImages

的滚动视图的IBOutlet

添加以下代码并通过传递像这样的图像数组来调用函数:

 if (imageArray.count)
    {
        [self addImagesToScrollView:imageArray];
    }

并在.m

中编写此代码
-(void)addImagesToScrollView:(NSArray *)imageArray
{


 CGRect pageFrame;
 UIImageView *imageView;
 CGFloat widthImg = 100.0f;
 CGFloat Dist = 15.0f;


 // scrollVIewForMutualFriends.backgroundColor = [UIColor redColor];

 for (UIView *view in scrollViewForSports.subviews)
 {
     if ( [view isKindOfClass:[UIButton class]] || [view isKindOfClass:[UIView class]]  )
     {
         [view removeFromSuperview];
     }
 }

 for (int i= 0;  i < imageArray.count ; i++) //imageArray.count
 {
 UIView *viewBg = [[UIView alloc] init];

 pageFrame = CGRectMake(i * widthImg , 0.0f, widthImg , widthImg) ;//scrollVIewForMutualFriends.bounds.size.height

 [viewBg setFrame:pageFrame];

 [viewBg setBackgroundColor:[UIColor clearColor]];

 [viewBg addSubview: lblName] ;
 [viewBg addSubview:btnOnImg];

 [scrollViewForImages addSubview: viewBg] ;
     }

    scrollViewForImages.contentSize = CGSizeMake(imageArray.count * widthImg, scrollViewForSports.frame.size.height);

}

让我知道是否有任何混淆