如何使用autolayout在scrollview中创建图像幻灯片?

时间:2014-11-13 20:16:44

标签: ios xcode uiscrollview autolayout uicollectionviewcell

我有一个加载一系列单元格的集合视图。一些单元格将具有静态图像(效果很好),但有些可能有多个图像需要可以刷卡。

enter image description here

UICollectionViewCell是基本视图,UIScrollView位于其中(固定在其超级视图的顶部,左侧,底部和右侧)。

将UIImageView添加到滚动视图,我想将其固定到滚动视图的顶部和左侧,但其宽度和高度与集合视图单元格相同,而不是滚动视图的内容大小。

然后我想要将两个附加图像固定到集合视图单元格的顶部,以及左侧最近的视图(在本例中为先前的UIImageView)。

故事板看起来像这样:

enter image description here

(其他图像在屏幕外显示但未显示)。

1 个答案:

答案 0 :(得分:0)

我决定通过代码添加图片:

有父视图和滚动视图(附加到IBOutlet)。

CollectionViewCell子类包含:

@synthesize lbl, sv, pageControl;

- (void) awakeFromNib {
    sv.userInteractionEnabled = NO;
    sv.delegate = self;
    pageControl.userInteractionEnabled = NO;
    [self.contentView addGestureRecognizer:sv.panGestureRecognizer];
}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    CGFloat pageWidth = sv.frame.size.width;
    float fractionalPage = sv.contentOffset.x / pageWidth;
    NSInteger page = lround(fractionalPage);
    self.pageControl.currentPage = page;
}

然后,在View Controller的collectionView:cellForItemAtIndexPath方法中,我手动添加图像,如下所示:

        UIImageView *img = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[myArray objectAtIndex:indexPath.row]]];
        img.frame = (CGRect) { 0, 0, cell.frame.size.width, cell.frame.size.height};
        [cell.sv addSubview:img];

        img = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[myArray objectAtIndex:indexPath.row + 1]]];
        img.frame = (CGRect) { cell.frame.size.width, 0, cell.frame.size.width, cell.frame.size.height };
        [cell.sv addSubview:img];

        img = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[myArray objectAtIndex:indexPath.row + 2]]];
        img.frame = (CGRect) { cell.frame.size.width * 2, 0, cell.frame.size.width, cell.frame.size.height };
        [cell.sv addSubview:img];

        [cell.sv setContentSize:CGSizeMake(cell.frame.size.width * 3.0, cell.frame.size.height)];

我本来希望使用StoryBoard / Interface Builder这样做,但就目前而言,这就足够了。