我正在尝试重新实现这里UICollectionView看到的不定式滚动.对我来说遗失的东西:
ViewController.h:
@interface ViewController : UIViewController<UICollectionViewDataSource, UICollectionViewDelegate>
@end
Run Code Online (Sandbox Code Playgroud)
DataCell.h:
@interface DataCell : UICollectionViewCell
@property (nonatomic, strong) UILabel *label;
@end
Run Code Online (Sandbox Code Playgroud)
DataCell.m:
#import "DataCell.h"
@implementation DataCell
-(instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if(self){
self.label = [[UILabel alloc] initWithFrame:self.bounds];
self.autoresizesSubviews = YES;
self.label.autoresizingMask = (UIViewAutoresizingFlexibleWidth |
UIViewAutoresizingFlexibleHeight);
self.label.textAlignment = NSTextAlignmentCenter;
self.label.adjustsFontSizeToFitWidth = YES;
[self addSubview:self.label];
}
return self;
}
@end
Run Code Online (Sandbox Code Playgroud)
CustomCollectionView.h:
@interface CustomCollectionView : UICollectionView
@end
Run Code Online (Sandbox Code Playgroud)
对于整个项目,我使用了故事板和法线UIViewController.在这个视图控制器上,我UICollectionView在Interface Builder中添加了一个.我将集合视图中的插座与视图控制器连接起来,并设置数据源并再次将方法委托给我的视图控制器.我还在UICollectionViewCellInterface Builder中设置了自定义类和重用标识符.
所以一切都应该工作,但我只得到一个黑屏.我错过了什么?您可以在此处 …
objective-c interface-builder ios infinite-scroll uicollectionview
我做了UICollectionView一个垂直滚动.
单元格的宽度大于屏幕宽度,因此我创建了一个customFlowLayout基于UICollectionViewFlow布局的方法,返回正确的计算内容大小.
但是,这不起作用.当单元格的宽度小于屏幕宽度时,它可以工作.这是否意味着在垂直滚动中我们的宽度不能超过屏幕宽度?
水平滚动也是一样,但是高度CollectionView限制在屏幕高度.
有没有办法使它工作?
我正在开发一个项目,我正在使用UICollectionView创建一个'图像自动收报机',我正在宣传一系列徽标.collectionView是一个项目高和十二个项目长,并一次显示两到三个项目(取决于可见的徽标的大小).
我想从第一个项目到最后一个项目进行慢速自动滚动动画,然后重复.
有没有人能够做到这一点?我可以使用滚动工作
[myCollection scrollToItemAtIndexPath:[NSIndexPath indexPathForRow:(myImages.count -1) inSection:0] atScrollPosition:UICollectionViewScrollPositionRight animated:YES];
Run Code Online (Sandbox Code Playgroud)
但这太快了!
[UIView animateWithDuration:10 delay:2 options:(UIViewAnimationOptionAutoreverse + UIViewAnimationOptionRepeat) animations:^{
[myCollection scrollToItemAtIndexPath:[NSIndexPath indexPathForRow:(myImages.count -1) inSection:0] atScrollPosition:UICollectionViewScrollPositionRight animated:NO];
} completion:nil];
Run Code Online (Sandbox Code Playgroud)
这产生了所需的滚动速度,但只有最后几个单元格在系列中可见.我怀疑它们(甚至是起始的可见细胞)都会立即出现.
有什么想法吗?
目前我正在尝试创建一个UICollectionView,应该显示一个简单的excel-like-spreadsheet,用rows和columns.UICollectionViews我相信,这应该是一件容易的事.而且我真的想要实现UICollectionView,而不是任何grid framework.
但此刻我暂停了一下.我已经想通了,我好遗憾的是不能使用UICollectionViewDelegateFlowLayout的,因为这仅支持scrolling在任一 horizontally或vertically方向.但我需要scrolling双向.
因此我必须使用一个UICollectionViewLayout,但为此我没有找到好的例子,如何使用它.你有没有一个例子,如何子类化UICollectionViewLayout支持rows和columns?
提前致谢.
使用前一个问题的答案,我做了一个无限卷轴.但是,滚动时我遇到了问题.
似乎在一毫秒内,UICollectionView(或者可能UIScrollView就此而言)认为所显示的细胞不再可见,因此将细胞重新用于新细胞.这导致在滚动时双重使用单元格.我相信这是我的问题的原因是因为"欺骗"使用,以便能够无限滚动是重置contentOffset的UIScollView.
我的单元格UICollectionView包含一个背景图像,它使用异步下载(从缓存中取出)MKNetworkKit.另一个副作用是当连续滚动视图"屏幕长度"时,屏幕会被截断.几乎就像在reloadData中发生了一样UIScrollView,但代码根本没有重新加载数据.
我的问题是:如何防止UICollectionView重复使用可见细胞和突然截断视图?
我正在尝试实现具有无限滚动行为的集合视图。滚动应该是圆形的UIPickerView。可以使用Apple的UICollectionView显示器完成吗,还是别无选择,只能创建一个水平PickerView?
你怎么看?
我使用UICollection视图来显示网格布局中的项目.
对于数据源,我使用5*5维数组.
而且我在section中为numberOfItems返回5,为numberOfSections返回5.
然后我的应用程序也崩溃了以下错误:
'UICollectionView收到了一个不存在索引路径的单元格的布局属性:{length = 2,path = 0 - 5}'
//////===viewcontroller.m==///////
- (void)viewDidLoad {
self.theData = @[@[@"1",@"2",@"3",@"4",@"5"], @[@"6",@"7",@"8",@"9",@"10"],@[@"11",@"12",@"13",@"14",@"15"],@[@"16",@"17",@"18",@"19",@"20"],@[@"21",@"22",@"23",@"24",@"25"]];
MultpleLineLayout *layout = [[MultpleLineLayout alloc] init];
self.collectionView.collectionViewLayout = layout;
self.collectionView.showsHorizontalScrollIndicator = NO;
self.collectionView.showsVerticalScrollIndicator = NO;
layout.scrollDirection = UICollectionViewScrollDirectionHorizontal;
self.view.backgroundColor = [UIColor blackColor];
[self.collectionView registerClass:[DataCell class] forCellWithReuseIdentifier:@"DataCell"];
[self.collectionView reloadData];
}
- (NSInteger)collectionView:(UICollectionView *)view numberOfItemsInSection:(NSInteger)section
{
return 5;
}
- (NSInteger)numberOfSectionsInCollectionView: (UICollectionView *)collectionView {
return 5;
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
DataCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"DataCell" forIndexPath:indexPath];
cell.label.text = self.theData[indexPath.section …Run Code Online (Sandbox Code Playgroud) ios ×6
objective-c ×4
scroll ×2
uiscrollview ×2
cocoa-touch ×1
ios6 ×1
nsindexpath ×1
uipickerview ×1