【问题标题】:Creating a horizontal scrolling with UIViews使用 UIViews 创建水平滚动
【发布时间】:2015-03-19 20:36:16
【问题描述】:

首先从一个例子开始:

这是图片的底部,我可以通过滑动滚动浏览底部的那些小缩略图。

我正在寻找创建 WhatsApp 当前用于滚动一组图像的效果的方法。

我开始研究如何为此使用 UITableView,但很快我就遇到了有关 UIScrollView 和 UICollectionView 的话题。现在我的问题是,在这种情况下我应该使用什么?在这种情况下,最佳编程实践是什么。

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

感谢您的帮助

【问题讨论】:

标签: ios uitableview swift uiscrollview uicollectionview


【解决方案1】:

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

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

[layout setScrollDirection:UICollectionViewScrollDirectionHorizontal];

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

【讨论】:

    【解决方案2】:

    你要做的就是获取scrollview的IBOutlet,即scrollViewForImages

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

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

    如果有任何困惑,请告诉我

    【讨论】:

    • 感谢代码示例!我不知道目标 c,但我想我可以自己弄清楚。这也可以通过子视图的一些自动布局来实现吗?我已经在 storybuilder 中构建了其他所有内容。
    猜你喜欢
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2016-03-10
    • 1970-01-01
    • 2015-08-09
    • 1970-01-01
    • 2021-03-07
    • 1970-01-01
    相关资源
    最近更新 更多