UIImagePickerController隐藏了一些视图并破坏了视图层次结构

时间:2016-03-28 01:51:00

标签: ios uiscrollview autolayout uicollectionview uiimagepickercontroller

我垂直放置了6个按钮,最后一个按钮位于页面的最底部。在第5个和第6个按钮之间有一个动态添加的集合视图。每当我在它们之间添加集合视图时,我会更新第6个位置(向下滑动)并且它越界,所以我相应地更新了滚动视图的contentSize,到目前为止一直很好。

我正在使用UIImagePickerController,当点击其中一个按钮时会显示该UIImagePickerController。这是问题所在。如果我选择图像或取消选择,我的动态创建的集合视图被隐藏,我更新位置的第6个按钮返回到其原始位置(即使与我的集合视图相关的所有变量/源都具有正确的值,所以我假设页面没有重新加载)。

由于选择图像或取消UIImagePickerController与我的任何视图的位置/可见性(包括集合视图)完全无关,我想知道为什么集合视图会被隐藏。

以下是我展示self.imagePicker.allowsEditing = true self.imagePicker.sourceType = .PhotoLibrary self.presentViewController(self.imagePicker, animated: true, completion: nil) 的方式:

let frameForCollectionView = CGRectMake(x, y, width, height)

self.addChildViewController(self.collectionViewController)
self.collectionViewController.view.frame = frameForCollectionView
self.containerView.addSubview(collectionViewController.view)
self.collectionViewController.didMoveToParentViewController(self)

以下是我动态添加集合视图的方法:

 func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
            // Setting picked image to the button's image here.
            self.dismissViewControllerAnimated(true, completion: nil)
        }

func imagePickerControllerDidCancel(picker: UIImagePickerController) {
        self.dismissViewControllerAnimated(true, completion: nil)
    }

这是我在选择取消或挑选图像时处理的位置:

Debug View Hierarchy

要查看后台发生了什么,我会在收集视图被隐藏后立即检查self.imagePicker.dismissViewControllerAnimated(true, completion: nil) 上的设计,并且我看不到那里的集合视图。

您可能需要了解以下内容:我正在使用自动布局,在模拟器上进行测试(iPhone 4S,iOS 9.3)。

有没有人知道为什么动态添加的集合视图会被隐藏以及如何防止这种行为?

修改

我更新了解雇代码如下:

self.imagePicker.modalPresentationStyle = UIModalPresentationStyle.OverCurrentContext

编辑2:

我也更新了演示风格:

var test : number;
test = 'test';

所以问题解决了一半。我只有在拾取和裁剪图像(即不取消)后才会遇到同样的问题。这可能是因为我们裁剪图像的视图是另一个视图而不是照片视图,因此我可能需要设置裁剪页面演示样式或任何其他解决方案。 有什么想法吗?

0 个答案:

没有答案