Ios Swift-关闭主视图后调整集合视图的大小
我的项目上有一个拆分视图和一个按钮,单击该按钮可最小化主视图。我正在使用此按钮功能最小化主视图:Ios Swift-关闭主视图后调整集合视图的大小,ios,swift,Ios,Swift,我的项目上有一个拆分视图和一个按钮,单击该按钮可最小化主视图。我正在使用此按钮功能最小化主视图: @IBAction func newProposalBtnWasClicked(_ sender: AnyObject) { if splitViewController?.preferredDisplayMode == .automatic { splitViewController?.preferredDisplayMode = .primaryHidden }
@IBAction func newProposalBtnWasClicked(_ sender: AnyObject) {
if splitViewController?.preferredDisplayMode == .automatic {
splitViewController?.preferredDisplayMode = .primaryHidden
} else {
splitViewController?.preferredDisplayMode = .automatic
}
var sub = self.childViewControllers[1] as! ProductsPlatesViewController
sub.collectionView.reloadData()
}
当主视图设置为.primaryHidden时,我的单元格的间距错误:
在集合视图控制器中,我定义了该函数:
但是当我按下按钮时,这个函数显然没有被调用。如何调用函数并重新定义每行的单元格数
编辑:
我更改了按钮操作函数的put reloadData()方法(上面编辑的代码)
我的SizeFormiteIndeXPath函数仍然相同。我得到的结果是:
这类似于在设置preferedDisplayMode之前应用sizeForItemAtIndexPath,但在代码中,这是在调用reloadData()函数之前进行的。我哪里出错了?当您隐藏主视图时,
sizeForestimationIndepath:
是否被调用?否。我在那里设置了一个断点。没有调用该方法。我不知道如何强制打电话。我已经尝试了setNeedsDisplay和setNeedsLayout:(尝试重新加载collectionView。setNeedsLayout
和setNeedsDisplay
仅用于自动布局。此问题与collectionView的FlowLayout
有关。更新后。请检查。谢谢:当您隐藏主视图时,SizeFormiteIndeXPath:
是否被调用?否。我在那里放置了断点。m未调用方法。我不知道如何强制调用。我已尝试setNeedsDisplay和setNeedsLayout:(尝试重新加载collectionView。setNeedsLayout
和setNeedsDisplay
仅用于自动布局。此问题与collectionView的FlowLayout
有关。请检查。谢谢:D
func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
sizeForItemAtIndexPath indexPath: IndexPath) -> CGSize {
if splitViewController?.preferredDisplayMode == .primaryHidden {
return CGSize(width: self.view.frame.width/3.0 - 10.0, height: self.view.frame.height/4.0 - 10.0)
}
return CGSize(width: self.view.frame.width/2.0 - 10.0, height: self.view.frame.height/4.0 - 10.0)
}