为啥点击 UICollectionViewCell 上的文本会消失?
Posted
技术标签:
【中文标题】为啥点击 UICollectionViewCell 上的文本会消失?【英文标题】:Why is text on a UICollectionViewCell disappearing when tapped on?为什么点击 UICollectionViewCell 上的文本会消失? 【发布时间】:2019-06-13 23:00:25 【问题描述】:我有一个UICollectionView
。它充满了包括图像视图和标签的单元格。
当你点击一个单元格时,文本就会消失。 我怎样才能阻止这种情况发生?
额外信息:
集合视图位于连接到 baseVC 的容器中。
单元格及其大部分内容都添加到其 xib 文件中。一切都正确显示。期待点击时,文本消失然后重新出现。
还要注意标签并没有消失,只有文字。
调用单元格时会添加自定义文本:func setup(profImage: String, contentView: String, titleLabel: String, subtitleLabel: String)
,即使禁用添加文本,默认标签仍然会在点击时消失。
【问题讨论】:
你能做一个回购或有一个示例xcode项目的东西吗? 我在这里包括了我能做到的:github.com/makinggainz/CollectionViewCode@codeherk 我尝试创建一个新的 xcode 项目并从您提供的链接中导入代码。它产生了 15 个错误。CollectionViewCellP1
用于P1BottomSheetViewController
的扩展,这是一个未声明的类型。如果您可以使用正在使用的自定义类启动示例 xcode 项目,那将非常有帮助。
项目太大,无法分享@codeherk
您可以致电deselectMethod
of collectionView
inside collectionViewDidSelectItem
进行快速修复
【参考方案1】:
我会确保将标签添加到单元格的contentView
而不仅仅是单元格的“最顶层”视图。也许xib
的设置方式不正确。确保它是 xib 等中的UICollectionViewCell
。您还可以发布您如何设置xib
的图片。
另外,为了调试,我会删除任何处理未围绕标签旋转的单元格的代码(例如,删除动画,直到修复错误)。这将使您能够专注于这个问题。或者,另一种方式,从头开始并重新创建单元格(只有标签)。让标签展示不是火箭科学,但如果你不逐步建立正在发生的事情,你可以让它成为火箭科学。
另一个潜在问题是布局。布局是否正确?当您突出显示时,它可能会中断(出于某种原因)。
【讨论】:
所以我测试了一些新的东西,我在单元格中添加了一个标签,然后运行,当点击该标签时,该标签不会消失。我还检查并确保它不是由于限制。该标签和文本之间的唯一区别是调用 reloadData() 时会更改文本 @Outsider 然后我会在你的工作基础上再接再厉。删除所有视图。让那个标签与文本一起工作。测试一下。然后是第二个标签。测试一下。然后添加图像。测试一下。很有可能是一些未知的 ios 错误(人们在构建应用程序时总是在单元格上显示标签),这可能很愚蠢。【参考方案2】:你试过在动画完成后重置文字吗?
let cell = collectionView.cellForItem(at: indexPath)
let thumbnail = postArray[indexPath.item].media[0].thumbnail!
let date = ConvertDate(mediaTimestamp: postArray[indexPath.row].media[0].postTimeStamp!, isItForP3: false).getDate!
UIView.animatewithDuration: 0.1, delay: 0.0, options: UIView.AnimationOptions.curveLinear, animations:
cell!.transform = CGAffineTransform.identity.scaledBy(x: 1.0, y: 1.0)
, completion: (finished: Bool) in
if finished
cell.setup(profImage: "\(self.postArray[indexPath.item].user.profileImageUrlString!)", contentView: thumbnail, titleLabel: postArray[indexPath.item].user.username!, subtitleLabel: date)
)
不过,可能有更好的方法来做到这一点。
【讨论】:
但我希望文本始终可见。此外,在我添加这个动画之前,这种奇怪的行为就存在了 嗯,有没有其他方法可以做同样的动画?转换整个单元格(UICollectionViewCell)似乎很奇怪,在单元格上添加一个容器视图并添加一个函数来在该视图上创建相同的动画,而不是超级视图? 为什么看起来很奇怪?这不是好习惯吗?无论如何,如果您认为这是相关的,我认为情况并非如此,因为在我加入动画之前,这是一个问题。 @Outsider 你在回收电池吗?我建议在您的视图中添加一个方法,例如 drawAsPlaceholder() (在其中您重置每个值 - 标签 - 图像等),然后在您的设置方法中调用它【参考方案3】:尝试使用 UILabel 的高亮文本颜色属性:
应用于标签文本的突出显示颜色。
@property(nonatomic, strong) UIColor *highlightedTextColor;
【讨论】:
以上是关于为啥点击 UICollectionViewCell 上的文本会消失?的主要内容,如果未能解决你的问题,请参考以下文章
为啥向 UICollectionViewCell 中的按钮添加操作效果不佳?
不知道为啥我的自定义 UICollectionViewCell 不起作用?
为啥 UICollectionViewCell 在 Interface Builder Xcode7.1 OS X Yosemite 中的出口为零?
UICollectionViewCell 翻转并在点击时增长