【问题标题】:UICollectionView UseLayoutToLayoutNavigationTransitions with different datasourcesUICollectionView UseLayoutToLayoutNavigationTransitions 与不同的数据源
【发布时间】:2014-02-19 11:07:12
【问题描述】:

我有两个 UICollectionView 对象,它们都有不同的源和委托。我想使用 UseLayoutToLayoutNavigationTransitions 实现带有过渡效果的“Photos app'esque”外观。

但它不起作用。当我调用 UseLayoutToLayoutNavigationTransitions 时,它会更改布局,但不会更改内容。

第一张图片是第一个收藏视图。一系列类别和其中包含的人。

第二张图片是我希望动画最终出现的效果。特定类别中的一系列人物。

最后一张照片是现在发生的事情。类别只是重新排列。

【问题讨论】:

    标签: ios ios7 xamarin uicollectionview


    【解决方案1】:

    看看http://www.objc.io/issue-12/collectionview-animations.html中的

    UICollectionViewController 实例之间的转换

    部分。

    它基本上向您展示了您必须通过实现导航控制器委托方法来手动更改数据源和委托:

    - (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated
    {
        if ([viewController isKindOfClass:[FJDetailViewController class]]) {
            FJDetailViewController *dvc = (FJDetailViewController*)viewController;
            dvc.collectionView.dataSource = dvc;
            dvc.collectionView.delegate = dvc;
            [dvc.collectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForItem:_selectedItem inSection:0] atScrollPosition:UICollectionViewScrollPositionCenteredVertically animated:NO];
        }
        else if (viewController == self){
            self.collectionView.dataSource = self;
            self.collectionView.delegate = self;
        }
    }
    

    【讨论】:

      【解决方案2】:

      您的问题是在过渡期间 iOS 会更改数据源。看我对这个问题的回答How to use useLayoutToLayoutNavigationTransitions in UICollectionView?

      您可以使用此处描述的相同模式:

      • 使用UseLayoutToLayoutNavigationTransitions 获取布局更改
      • 观察过渡何时完成
      • 将数据源设置为您当时需要的数据源

      【讨论】:

        猜你喜欢
        • 2014-01-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-20
        相关资源
        最近更新 更多