自定义UIcollectionViewCell,使用view控制颜色变化

Posted

技术标签:

【中文标题】自定义UIcollectionViewCell,使用view控制颜色变化【英文标题】:custom UIcollectionViewCell, using view to control color changes 【发布时间】:2016-03-07 20:52:14 【问题描述】:

我正在阅读这里的教程:http://pinkstone.co.uk/how-to-build-a-uicollectionview-in-ios-8/

看到了一个看起来很棒的部分,因为它使事情变得简单,使用视图来显示选定/未选定项目的颜色变化。-

(void)awakeFromNib 

    // background color
    UIView *bgView = [[UIView alloc]initWithFrame:self.bounds];
    self.backgroundView = bgView;
    self.backgroundView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"blue"]];

    // selected background
    UIView *selectedView = [[UIView alloc]initWithFrame:self.bounds];
    self.selectedBackgroundView = selectedView;
    self.selectedBackgroundView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"pink"]];

作者展示了这是一种无需管理细胞状态的简单方法。

问。我想在突出显示过程中使用此方法更改颜色。但是,didHighlightItemAtIndexPath 位于 CollectionViewController 中,我希望它使用相同的过程。

基本上它的作用是根据选中/未选中从一种颜色变为另一种颜色。我想使用添加颜色来指示突出显示/未突出显示之间的状态。

我检查了单元格中所有使用 UIView 的方法,没有高亮/未高亮的。

关于具有使用细胞方法优势的方法的任何想法?我可以从 viewcontroller 方法调用自定义方法并在那里加载视图吗?

您可能会将其视为“按住”,当它被按住时会改变颜色。

【问题讨论】:

【参考方案1】:

UIView 不会知道它的选中或未选中状态,因为它是一个非常基本的组件,并不特定于允许选择的控件。 UICollectionViewCell 确实有 selected 属性,所以这将是更改这些特性的正确位置。查看文档,似乎利用setSelectedselectedBackgroundView 会给您一个自定义选定单元格的L&F 的好机会。还有一个 highlighted 状态,以防您可能也在寻找它。

【讨论】:

以上是关于自定义UIcollectionViewCell,使用view控制颜色变化的主要内容,如果未能解决你的问题,请参考以下文章

初始化自定义 UICollectionViewCell

自定义 UICollectionViewCell 中的 UIScrollview 不起作用

XCTest 与自定义 UICollectionViewCell

UICollectionViewCell 内带有 UITableView 的自定义单元格

从自定义 UICollectionViewCell 获取正确的按钮

如何创建自定义 UICollectionViewCell