访问位于设备屏幕中心的 UICollectionView 单元格中的视图

Posted

技术标签:

【中文标题】访问位于设备屏幕中心的 UICollectionView 单元格中的视图【英文标题】:Access a View within the UICollectionView cell that is positioned at the center of the device screen 【发布时间】:2017-01-03 21:39:04 【问题描述】:

如果在发生滚动后单元格位于设备屏幕的中心,我正在尝试更改集合视图单元格中视图的背景颜色。我目前有一种工作方法可以在滚动后更改所有当前可见单元格中视图的背景颜色,如下所示:

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView


    if(scrollView==_collectionViewFollwersFeed)
    
        for (UICollectionViewCell *cell in [self.collectionViewFollwersFeed visibleCells]) 

            UIView *tsView;

            tsView=(UIView *)[cell viewWithTag:99];

            tsView.backgroundColor = [UIColor redColor];

        
    

当我尝试编辑此方法以仅更改位于中间的单元格中视图的背景颜色时,我无法使此功能正常工作。这是我认为应该有效的调整:

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView


    if(scrollView==_collectionViewFollwersFeed)
    

        NSIndexPath *centerCellIndexPath =
        [self.collectionViewFollwersFeed indexPathForItemAtPoint:
         [self.view convertPoint:[self.view center] toView:self.collectionViewFollwersFeed]];

        UICollectionViewCell *cell;
        NSString *CellIdentifier;

        CellIdentifier = @"FollowersFeed";
        cell = [_collectionViewFollwersFeed dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:centerCellIndexPath];

        UIView *tsView = (UIView *)[cell viewWithTag:99];

        tsView.backgroundColor = [UIColor redColor];

    

有没有人知道为什么这个方法不会改变屏幕中心单元格的 View 背景颜色?

【问题讨论】:

【参考方案1】:

问题出在这一行:

cell = [_collectionViewFollwersFeed dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:centerCellIndexPath];

这是创建一个新单元格,它不是您的集合视图当前显示的单元格。

要访问集合视图中已经存在的单元格,请使用:

cell = [_collectionViewFollwersFeed cellForItemAtIndexPath:centerCellIndexPath];

【讨论】:

以上是关于访问位于设备屏幕中心的 UICollectionView 单元格中的视图的主要内容,如果未能解决你的问题,请参考以下文章

如何判断 CollectionViewCell 是不是位于屏幕中心

居中图像 React Native 加载屏幕

如何使 UITableView 内容围绕中心点滚动

将单选按钮安排在文本下方,并完美地位于所有 android 设备的中心

WinCC地图控件

将 MPMoviePlayerController 视图置于 UIview 的中心(相同位置)