swift: uicollectionview 在过渡期间更改单元格的 contentoffset
Posted
技术标签:
【中文标题】swift: uicollectionview 在过渡期间更改单元格的 contentoffset【英文标题】:swift: uicollectionview changes contentoffset of the cell during transition 【发布时间】:2017-10-18 08:05:15 【问题描述】:我有一个简单的 UICollectionView,在 navigationController 中有一个自定义单元格。出于某种原因,当我推送 viewController 时,collectionView 单元格在转换期间会更改其布局。
在 viewController 转换过程中,这是 uicollectionview 的一些常见行为吗?因为,例如:标签就没有这样的问题
When back button was clicked 来自collectionView的绿色
添加新的视图控制器
navigationController?.pushViewController(controller, animated: true)
使用EasyPeasy pod 设置自动布局
collectionView.easy.layout([
Top(),
Right(),
Width(view.frame.width),
Bottom(10).to(button),
])
button.easy.layout([
Center(),
Height(60),
Width(300),
])
【问题讨论】:
你有什么代码可以给我们看吗? 很难理解你想用这些约束做什么,但你没有为 collectionview 使用任何高度。我认为这是由按钮计算的。看起来绿色的collectionview被设置为10px(也许?)。你什么时候在你的代码中设置约束?那个蓝色框是什么,以及该元素的约束条件是什么?感觉你的自动布局还是有问题.. @MartinBorstrand UICollectionViewCell 的背景颜色为蓝色。我在 viewDidLoad 中设置了约束。对不起给您带来不便。似乎在过渡回单元格变小了 Okej,那你设置单元格的大小了吗?看起来怎么样? @MartinBorstrand 在 collectionView(:sizeForItemAt) 中返回 CGSize(width: collectionView.bounds.width, height: collectionView.bounds.height)。正如我上面已经添加的那样,这种行为只发生在 collectionView 单元格 【参考方案1】:我想我已经找到了您的问题,并且它在您的 AppDelegate 中。导航控制器设置为 false 的属性 isTranslucent
似乎导致了这个罕见的问题。一个半透明的导航栏将在您的 viewcontroller 的视图之上,就像它上面一样。一个非半透明的导航栏会向下推视图控制器的视图,或者换句话说,调整它的大小以使其适合它。但是为什么 collectionview 会像它那样动画是我实际上无法给出明确答案的原因。也许其他人可以做到这一点?..
要保持导航栏半透明,您可以在视图控制器中设置另一个属性,即“extendedLayoutIncluedsOpaqueBars”为 true。
所以.. 这样做。在您的 AppDelegate 中:
window = UIWindow(frame: UIScreen.main.bounds)
window!.makeKeyAndVisible()
let controller = TestingNavigationController()
let navigation = UINavigationController(rootViewController: controller)
window!.rootViewController = navigation
let navigationBarAppereance = UINavigationBar.appearance()
navigationBarAppereance.isTranslucent = false
然后,在您的视图控制器 viewDidLoad 方法中添加这一行
extendedLayoutIncludesOpaqueBars = true
希望这能解决您的问题! :)
Apple Documentation about extendedLayoutIncludesOpaqueBars
【讨论】:
@Dauren 你能对我的回答做出反应吗?以上是关于swift: uicollectionview 在过渡期间更改单元格的 contentoffset的主要内容,如果未能解决你的问题,请参考以下文章
UICollectionView - 在设备旋转上调整单元格大小 - Swift
Swift 3 中的 UICollectionView + NSFetchedResultsController
swift 在Swift中键入UITableView和UICollectionView Dequeuing
麻烦出队 uicollectionview 单元格(swift 3)