Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift-关闭主视图后调整集合视图的大小_Ios_Swift - Fatal编程技术网

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)
  }