滚动水平和垂直两个方向



我需要水平和垂直滚动图像。

我有segregated verticallyin each section itself it will be so many images which will be scrolled horizontally的部分。

我使用UICollectionView与Ray wenderlich教程垂直滚动,但我如何在每个部分得到水平滚动?

我应该使用任何其他对象,如UITableViewUIScrollview用于此目的吗?

有什么教程可以做到这一点吗?

Is it compulsory to implement Layout subclass or UICollectionviewFlowlayout when using collection view ?

编辑

到目前为止,我已经实现了这段代码,它垂直滚动,每个部分有5个部分,但不能滚动单个部分

- (NSInteger)collectionView:(UICollectionView *)view numberOfItemsInSection:(NSInteger)section;
{
    NSArray *arrayReturn = [self returnArray:section];
    return arrayReturn.count;
}
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{   
    return 5;
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    ImageCell *cell = [cv dequeueReusableCellWithReuseIdentifier:@"imagecell" forIndexPath:indexPath];
    NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{
        NSArray *arrSection = [NSArray arrayWithArray:[self returnArray:indexPath.section]];
        NSString *fileName = [arrSection objectAtIndex:indexPath.row];
        UIImage *image = [UIImage imageNamed:fileName];
           dispatch_async(dispatch_get_main_queue(), ^{
//               cell.imgVw.image = ;
               if([CollectionView.indexPathsForVisibleItems containsObject:indexPath]){
                   ImageCell *currentCell = (ImageCell *) [cv cellForItemAtIndexPath:indexPath];
                   currentCell.imgVw.image = image;
               }
           });
    }];
    [self.thumbnailQueue addOperation:operation];
    return cell;
}
- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
{
    HeaderView *Header = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"PhotoHeaderView" forIndexPath:indexPath];
    Header.lblHeaderTitle.text = @"Header title";
    Header.backgroundColor = [UIColor yellowColor];
    return Header;
}

下面是一个类似的教程:

http://www.raywenderlich.com/4723/how-to-make-an-interface-with-horizontal-tables-like-the-pulse-news-app-part-2

基本上你需要做以下事情:

  • 取一个tableView或CollectionView
  • 在每个单元格中,您需要添加一个启用水平滚动的滚动视图。
  • 在创建单元格时为每个单元格的滚动视图添加项,并为滚动视图提供适当的内容大小。

试试这个

**viewController.h**
IBOutlet UIScrollView *scrollViewMain;

**viewController.m**
- (void)viewDidLoad
{
   [super viewDidLoad];
   [self createDisplay];
// Do any additional setup after loading the view, typically from a nib.
}
-(void) createDisplay
{
for(UIView *subView in scrollViewMain.subviews)
{
    if(![subView isKindOfClass:[UIImageView class]])
    {
        [subView removeFromSuperview];
    }
}
int yPos =5;
for (int i=0; i< 10; i++)
{
    int xPosition=5;

    UIScrollView *scrollView =[[UIScrollView alloc]initWithFrame:CGRectMake(xPosition, yPos, scrollViewMain.frame.size.width, 100)];
    scrollView.backgroundColor =[UIColor clearColor];
    scrollView.autoresizingMask =UIViewAutoresizingFlexibleWidth;

    xPosition +=5;
    for (int j=0; j<10; j++)
    {
        UILabel *lblTitle = [[UILabel alloc] initWithFrame:CGRectMake(xPosition, 0, 100, 100)];
        lblTitle.textColor = [UIColor whiteColor];
        lblTitle.backgroundColor =[UIColor greenColor];
        lblTitle.text = @"test";
        lblTitle.numberOfLines =0;
        lblTitle.font = [UIFont boldSystemFontOfSize:15];
        [scrollView addSubview:lblTitle];
        xPosition +=100;
        xPosition +=10;
    }
    [scrollView setContentSize:CGSizeMake(xPosition, 100)];
    [scrollViewMain addSubview:scrollView];
    yPos +=120;
}
[scrollViewMain flashScrollIndicators];
[scrollViewMain setContentSize:CGSizeMake(0, yPos)];
  }

最新更新