更改集合视图的 isHidden 属性不适用于搜索栏取消按钮

Posted

技术标签:

【中文标题】更改集合视图的 isHidden 属性不适用于搜索栏取消按钮【英文标题】:Changing collection view's isHidden property doesn't work with Search Bar cancel button 【发布时间】:2017-03-20 15:50:54 【问题描述】:

我有一个隐藏在 ViewDidLoad 上的集合视图。当用户点击搜索栏时,将显示集合视图。但是当我点击搜索栏中的取消按钮时,集合视图并没有隐藏。我在其他帖子上阅读了使用 .alpha = 0 隐藏视图并且有效。我的问题是:

为什么 isHidden 不起作用而 .alpha 起作用? 如果我使用 .alpha = 0,集合视图是否仍然是活动层?

代码如下:

func searchBarCancelButtonClicked(_ searchBar: UISearchBar) 
    collectionView.isHidden = true // This doesn't work
    //collectionView.alpha = 0 // This works


func searchBarShouldBeginEditing(_ searchBar: UISearchBar) -> Bool 
    collectionView.isHidden = false // This doesn't work
    //collectionView.alpha = 1  // This works
    return true

通过将 Alpha 通道更改为 1 和 0 来显示应用程序工作的 GIF 动画

感谢您阅读我的问题。

【问题讨论】:

【参考方案1】:

这个隐藏属性在UIViews 上效果最好(同时用于许多其他事情)。如果您想使用 hidden 属性,最好将 collectionView 嵌入到视图中。

此属性的默认值为 false。作为优化, 值时集合视图可能不会创建相应的视图 这个属性是真的。因为可能没有视图,隐藏 元素不参与集合视图的命中测试。

来源:https://developer.apple.com/documentation/appkit/nscollectionviewlayoutattributes/1535336-ishidden

【讨论】:

以上是关于更改集合视图的 isHidden 属性不适用于搜索栏取消按钮的主要内容,如果未能解决你的问题,请参考以下文章

即使在使用view.setNeedsDisplay()刷新视图后,.isHidden属性也不会反映视图的更改

即使在使用 view.setNeedsDisplay() 刷新视图后,.isHidden 属性也不反映对视图的更改

Bootstrap data-spy="affix" 不适用于 Angular 视图更改

焦点引擎不适用于集合视图单元

具有组合布局的集合视图不适用于标题视图

动画不适用于 SwiftUI 视图状态更改