Tag: 自我评价

为什么UICollectionView的UICollectionViewCell在用户触摸上不突出显示?

我有一个由自定义的UICollectionViewCell子类组成的UICollectionView。 单元格显示正确,并通过触发此方法正确响应用户的触摸: – (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath 不过,我的理解是,当用户触摸单元格时,应该突出显示(蓝色),然后当用户抬起手指时突出显示应该消失。 这没有发生。 任何想法为什么? 这里是一些相关的代码: 在UICollectionView的数据源中: @implementation SplitCheckViewCollection – (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{ static NSString *cellIdentifier = @"ReceiptCellIdentifier"; SplitCheckCollectionCell *cell = (SplitCheckCollectionCell *)[collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath]; cell.cellName.text = [NSString stringWithFormat:@"%@%i",@"#",indexPath.row+1]; return cell; } 在UICollectionViewCell的实现中: @implementation SplitCheckCollectionCell – (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { NSArray *arrayOfViews = […]

我怎样才能在UICollectionView中居中行?

我有一个随机细胞UICollectionView 。 有什么方法可以让我排成行吗? 这是默认情况下的样子: [ xxxxxx ] [ xxxxxx ] [ xx ] 以下是所需的布局: [ xxxxx ] [ xxxxx ] [ xx ]

UICollectionView单元格select和单元重用

在select细胞时,我想要处理改变细胞的外观。 我想到了委托方法collectionView:didSelectItemAtIndexPath: & collectionView:didDeselectItemAtIndexPath:是我应该在哪里编辑单元格。 -(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { DatasetCell *datasetCell = (DatasetCell *)[collectionView cellForItemAtIndexPath:indexPath]; [datasetCell replaceHeaderGradientWith:[UIColor skyBlueHeaderGradient]]; datasetCell.backgroundColor = [UIColor skyBlueColor]; } 和 -(void)collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath { DatasetCell *datasetCell = (DatasetCell *)[collectionView cellForItemAtIndexPath:indexPath]; [datasetCell replaceHeaderGradientWith:[UIColor grayGradient]]; datasetCell.backgroundColor = [UIColor myDarkGrayColor]; } 这工作正常,除了单元格被重用。 如果我在索引(0,0)处select单元格,它会改变外观,但是当我向下滚动时,在选定状态中会有另一个单元格。 我相信我应该使用UICollectionViewCell方法-(void)prepareForReuse准备重用单元格(即将单元格外观设置为非选中状态),但是这给我带来了困难。 -(void)prepareForReuse { if ( self.selected ) { [self replaceHeaderGradientWith:[UIColor […]

UICollectionView自动调整高度

如何正确调整UICollectionView的大小,使其完全显示其内容? 我尝试了很多东西,包括设置框架,调用reloadData并使布局无效: self.collectionView.contentSize = CGSizeMake(300, 2000); self.collectionView.frame = CGRectMake(0, 0, 300, 2000); [self.collectionView reloadData]; [self.collectionView.collectionViewLayout invalidateLayout]; 但没有任何影响。 按下button后,我仍然可以看到初始视图,如下所示: 我有一个小的演示程序,我有一个数据源生成100个元素。 在界面生成器中,我最初将UICollectionView的大小设置为一个小值,以便不是所有元素都适合,之后我按下一个button,之后执行上面的代码。 我期望UICollectionView现在显示所有元素,但它不。 编辑:演示程序可以在https://github.com/mjdemilliano/TestUICollectionViewfind。 编辑2:我已经观察到帧更新在某个点丢失,因为如果我再次按下button,当前帧返回到旧值。 在button事件处理程序中添加一些日志语句之后,日志输出为: before: frame = {{0, 58}, {320, 331}}, contentSize = {320, 1190} update button pressed after: frame = {{0, 0}, {300, 2000}}, contentSize = {300, 2000} before: frame = {{0, 58}, {320, […]

UICollectionView性能 – _updateVisibleCellsNow

我正在处理自定义的UICollectionViewLayout ,它显示按日/周/月组织的单元格。 它不是平滑的滚动,看起来像滞后是由每个渲染循环调用[UICollectionView _updateVisibleCellsNow]引起的。 性能可以<30项,但在100或更多,其速度非常缓慢。 这是UICollectionView和自定义布局的限制,还是我没有给视图足够的信息来正确执行? 来源: https : //github.com/oskarhagberg/calendarcollection 布局: https : //github.com/oskarhagberg/calendarcollection/blob/master/CalendarHeatMap/OHCalendarWeekLayout.m 数据源和委托: https : //github.com/oskarhagberg/calendarcollection/blob/master/CalendarHeatMap/OHCalendarView.m 时间档案: 更新 也许它徒劳? 一些使用UICollectionViewController的普通UICollectionViewController进行一些testing,得到大致相同数量的单元格/屏幕,从而得到类似的时间configuration文件。 我觉得它应该能够同时处理大约100个简单的不透明单元,而没有抖动。 我错了吗?

UICollectionView的cellForItemAtIndexPath没有被调用

只有我第二次使用UICollectionView的,也许我咬了更多比我可以咀嚼,但不过: 我正在实现一个UICollectionView(myCollectionView),它使用自定义UICollectionViewCell我已经subclassed。 子类(FullReceiptCell)包含UITableView的和是视图控制器的大小。 我试图让FullReceiptCells之间的水平滚动。 包含myCollectionView的子类UICollectionViewController被推送到导航控制器堆栈。 目前,启用myCollectionView和水平滚动。 但是,没有可见的单元格。 我已经证实了 – (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section 已经运行并返回一个大于0的整数。我也确认myCollectionView的委托和数据源在IB中适当地设置为子类UICollectionViewController。 要加载单元格的方法: – (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 没有被调用。 这里是我在该控制器中推送UICollectionViewController和我的viewDidLoad方法的地方(注意:initWithBill是正常初始化程序的覆盖): 在以前的ViewControllers .m文件中: FullReceiptViewController *test = [[FullReceiptViewController alloc] initWithBill:currentBill]; test.title = @"Review"; [self.navigationController pushViewController:test animated:YES]; 在FullReceiptViewController.m中: – (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view from its nib. [self.myCollectionView […]

UICollectionView中的单元格间距

如何在UICollectionView的一部分中设置单元格间距? 我知道有一个属性minimumInteritemSpacing我已经把它设置为5.0仍然没有出现间距5.0。 我已经实现了stream出委托方法。 – (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section { return 5.0; } 我仍然没有得到理想的结果。 我认为它的最小间距。 有没有什么办法可以设置最大间距?

在UICollectionViewCell上长按手势

我想知道如何将一个长按手势识别器添加到(的子类)UICollectionView。 我在文档中看到它是默认添加的,但我不知道如何。 我想要做的是:长按一个单元格( 我有一个来自github的日历thingy ),获取哪个单元格,然后用它做东西。 我需要知道什么细胞是压抑的。 对不起,这个广泛的问题,但我找不到任何更好的谷歌或SO