gpt4 book ai didi

ios - pop segue 后方向不更新

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:58:48 24 4
gpt4 key购买 nike

我的设置

我有一个 UICollectionViewController显示纵向2列横向3列,像这样:

Portrait Orientation . . . . Landscape Orientation

我正在使用此代码在旋转时触发布局刷新:

- (void)updateViewConstraints
{
[super updateViewConstraints];
[[self.collectionView collectionViewLayout] invalidateLayout];
}

一切正常,但是......

问题

1. 我正在纵向查看 collectionView:

Portrait Orientation

一切都很好。

2. 我单击其中一个单元格以转到详细 View ,它也支持两个方向。然后在详细 View 中,我将方向切换为横向。还是不错的。

3. 仍处于横向模式,我现在点击 < back回到 collectionView,然后这是我看到的:

The error糟糕!

我完全不知道这是什么原因。在 SO 和 Google 上搜索没有找到任何结果。

我尝试过的

我尝试在 collectionVC.m 文件中实现这个方法:

- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
{
[super blahblah];
[[self.collectionView collectionViewLayout] invalidateLayout];
}

虽然即使我在 detailView 上也会调用它,但它并没有解决问题。

注意事项:

  1. 除了我上面发布的两个之外,我没有实现任何与方向相关的 should/will/did 方法。
  2. 我注意到的一件事是 collectionView 正在切换到 2 列布局。看起来它的 View 范围变得困惑了。

Potato很抱歉这篇文章很长。这是一个土 bean 。

所以有什么想法出了问题吗??

更新:我抓到了一个 screenshot of the UI hierarchy , 可能会有所帮助。

最佳答案

您面临的问题是当集合 viewController 不可见时确实发生了旋转。所以 updateViewConstraintsviewWillTransitionToSize:withTransitionCoordinator: 都不会被调用。

这个问题有两种可能的解决方案。

可以观察到方向的变化

 // in viewDidLoad
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationDidChange:) name:UIDeviceOrientationDidChangeNotification object:nil];

- (void)orientationDidChange:(NSNotification *)notification
{
//TODO: resetup the layout itemSize, etc if your it depend on the collection bounds.
// and make sure to do that after the rotation did happend(i.e in viewWillAppear or orientationDidChange:)
[[self.collectionView collectionViewLayout] invalidateLayout];
}

无论如何你都可以在viewWillAppear中使布局无效

     -(void)viewWillAppear:(BOOL)animated  
{
[super viewWillAppear:animated];
//TODO: resetup the layout itemSize, etc if your it depend on the collection bounds.
// and make sure to do that after the rotation did happend(i.e in viewWillAppear or orientationDidChange:)
[[self.collectionView collectionViewLayout] invalidateLayout];
}

关于ios - pop segue 后方向不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34739534/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com