use*_*698 5 paging objective-c uiscrollview ios uicollectionview
我必须像Appstore iOS应用程序一样创建网格视图.我想用UICollectionView分页来做这件事.我也实现了代码但不能像那样滚动.
我想要做的是在中心和两侧(左侧和右侧)将有一个图像,它应该显示上一个和下一个图像的一些部分.我为UICollectionView设置了帧为320*320.细胞大小为290*320.(细胞最小间距为10)1
以下是描述我的要求的两个链接.提前致谢.
(这就是我想要的)2
Dee*_*pak 11
您是否尝试将UICollectionViewFlowLayout的滚动方向设置为水平?
[yourFlowLayout setScrollDirection:UICollectionViewScrollDirectionHorizontal];
您需要在集合视图上启用分页,如下所示:
[yourCollectionView setPagingEnabled:YES];
我采取了shtefane的答案并对其进行了改进.输入您自己的cellWidth和cellPadding值.
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView
withVelocity:(CGPoint)velocity
targetContentOffset:(inout CGPoint *)targetContentOffset
{
CGFloat cellWidth = self.cellWidth;
CGFloat cellPadding = 9;
NSInteger page = (scrollView.contentOffset.x - cellWidth / 2) / (cellWidth + cellPadding) + 1;
if (velocity.x > 0) page++;
if (velocity.x < 0) page--;
page = MAX(page,0);
CGFloat newOffset = page * (cellWidth + cellPadding);
targetContentOffset->x = newOffset;
}
Run Code Online (Sandbox Code Playgroud)
小智 4
如果您在 collectionView 中使用分页,它将滚动一页而不是一个单元格。您可以禁用分页并实现 ScrollViewDelegate
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset
{
CGFloat pageW = 300;
int page = scrollView.contentOffset.x / pageW;
CGFloat newOffset =(page + ((velocity.x > 0)? 1 : -1)) * (pageW - 20);
CGPoint target = CGPointMake(newOffset, 0);
targetContentOffset = ⌖
NSLog(@"end Drag at %f /%i /%f",scrollView.contentOffset.x, page, velocity.x);
}
Run Code Online (Sandbox Code Playgroud)
与标准分页只有一处不同:如果快速拖动,集合将滚动多个单元格。并且不要忘记添加 UIScrollViewDelegate
| 归档时间: |
|
| 查看次数: |
22695 次 |
| 最近记录: |