Ios 如何使用autolayout在scrollview中创建图像幻灯片?
我有一个collectionview,它加载一系列单元格。一些单元格将具有静态图像(工作正常),但一些单元格可能具有多个需要可切换的图像 UICollectionViewCell是基础视图,UIScrollView在其中(固定在其superview的顶部、左侧、底部和右侧) 将UIImageView添加到scrollview中,我希望将其固定在scrollview的顶部和左侧,但其宽度和高度与collection view单元格相同,而不是scrollview的内容大小 然后,我希望将另外两个图像固定到集合视图单元格的顶部,以及左侧最近的视图(在本例中,是先前的UIImageView) 故事板的外观如下所示:Ios 如何使用autolayout在scrollview中创建图像幻灯片?,ios,xcode,uiscrollview,autolayout,uicollectionviewcell,Ios,Xcode,Uiscrollview,Autolayout,Uicollectionviewcell,我有一个collectionview,它加载一系列单元格。一些单元格将具有静态图像(工作正常),但一些单元格可能具有多个需要可切换的图像 UICollectionViewCell是基础视图,UIScrollView在其中(固定在其superview的顶部、左侧、底部和右侧) 将UIImageView添加到scrollview中,我希望将其固定在scrollview的顶部和左侧,但其宽度和高度与collection view单元格相同,而不是scrollview的内容大小 然后,我希望将另外两个
(其他图像不在屏幕上显示)。我决定通过代码添加图像: 有一个父视图和一个滚动视图(连接到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;
}
然后,在视图控制器的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)];
我本希望采用故事板/界面生成器的方式来实现这一点,但现在,这已经足够了