使用 UIViews 创建水平滚动
Creating a horizontal scrolling with UIViews
先从一个例子说起:
这是图片的底部,我可以通过滑动滚动浏览底部的那些小缩略图。
我正在寻找创建 WhatsApp 当前用于滚动浏览一组图像的效果的方法。
我首先了解如何为此使用 UITableView,但很快就遇到了有关 UIScrollView 和 UICollectionView 的话题。现在我的问题是,在这种情况下我应该使用什么?在这种情况下,最佳编程实践是什么。
我是否应该使用带有自定义单元格 (UIView) 的 UITableView 并以某种方式让它水平滚动。
我应该使用 UIScrollView 吗?大多数教程都是关于显示太大图像的,所以也许我不应该使用那个?
或者我应该使用 UICollectionView 吗?大多数关于此主题的教程都使用 2d 网格,所以集合视图可能有点矫枉过正?
感谢您的帮助
您应该结合使用 UICollectionView 和 UICollectionViewFlowLayout。 post 为您提供了准确的代码。 Creating a UICollectionView programmatically
对于您的情况,在使用布局初始化 collectionView 之前,您需要在布局上设置滚动方向,以便可以水平滚动。像这样:
[layout setScrollDirection:UICollectionViewScrollDirectionHorizontal];
此外,您需要根据需要设置集合视图单元格的大小。
你需要做的是获取 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);
}
如果有任何困惑,请告诉我
先从一个例子说起:
这是图片的底部,我可以通过滑动滚动浏览底部的那些小缩略图。
我正在寻找创建 WhatsApp 当前用于滚动浏览一组图像的效果的方法。
我首先了解如何为此使用 UITableView,但很快就遇到了有关 UIScrollView 和 UICollectionView 的话题。现在我的问题是,在这种情况下我应该使用什么?在这种情况下,最佳编程实践是什么。
我是否应该使用带有自定义单元格 (UIView) 的 UITableView 并以某种方式让它水平滚动。 我应该使用 UIScrollView 吗?大多数教程都是关于显示太大图像的,所以也许我不应该使用那个? 或者我应该使用 UICollectionView 吗?大多数关于此主题的教程都使用 2d 网格,所以集合视图可能有点矫枉过正?
感谢您的帮助
您应该结合使用 UICollectionView 和 UICollectionViewFlowLayout。 post 为您提供了准确的代码。 Creating a UICollectionView programmatically
对于您的情况,在使用布局初始化 collectionView 之前,您需要在布局上设置滚动方向,以便可以水平滚动。像这样:
[layout setScrollDirection:UICollectionViewScrollDirectionHorizontal];
此外,您需要根据需要设置集合视图单元格的大小。
你需要做的是获取 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);
}
如果有任何困惑,请告诉我