Ios 在当前视图后面添加完全不同的视图

Ios 在当前视图后面添加完全不同的视图,ios,cocoa-touch,uiviewcontroller,uisplitviewcontroller,subview,Ios,Cocoa Touch,Uiviewcontroller,Uisplitviewcontroller,Subview,摘要: 我正在尝试实现一个平移手势,它的工作原理与苹果公司的默认平移回手势(InteractivePopgestureRecognitor)一样。唯一的区别是,它会一直捕捉回splitview控制器的主视图,而不仅仅是返回堆栈上的一个视图。这是通过popToRootViewController完成的 我目前可以做什么: 我的UIScreenedGePangestureRecognitor子类能够跟随用户的触摸,并根据他们抬起手指的位置设置动画到正确的位置。也就是说,如果他们只将视图移动了一点,它

摘要: 我正在尝试实现一个平移手势,它的工作原理与苹果公司的默认平移回手势(InteractivePopgestureRecognitor)一样。唯一的区别是,它会一直捕捉回splitview控制器的主视图,而不仅仅是返回堆栈上的一个视图。这是通过popToRootViewController完成的

我目前可以做什么: 我的UIScreenedGePangestureRecognitor子类能够跟随用户的触摸,并根据他们抬起手指的位置设置动画到正确的位置。也就是说,如果他们只将视图移动了一点,它将捕捉回原始位置,并重置手势识别器。如果用户将其向右移动足够远并放开(超过屏幕中间略小于一半的阈值),则视图从屏幕右侧滑出,主视图滑入视图

我需要什么:
在将顶部细节视图移到右侧时,我希望使用导航离开前拍摄的主视图快照,以显示当前细节视图的后面(我使用快照创建UIImageView-我们称之为“dummyMasterview”)。我的问题是像addSubView这样的函数似乎将dummyMasterview作为该视图的背景。我希望能够顺利地将顶视图向右拉,以显示其下方的dummyMasterview。然后,当我释放时,我将适当地设置视图的动画(如果超过阈值,将一直弹出到我的实际根视图)。到目前为止,我只能使用addSubview和其他subview方法将此图像作为当前视图的背景。这并不是一个全新的视角。

好吧,我明白了。。。我无法将我的“dummyMasterview”添加到当前可见视图(我们称之为currentView)后面,因为我将其添加为currentView的子视图。这会导致dummyMasterview正好位于currentView的顶部,而不是后面。要将dummyMasterview置于currentView之后,必须使dummyMasterview成为主窗口的子视图:


因此,基本上,我愚蠢地认为currentView的子视图将放在该currentView的后面。因为我希望在currentView后面出现一个全新的视图,所以新视图需要是currentView的同级。也就是说,currentView和dummyMasterView现在都是主窗口的子视图。一旦有机会,我会发布图片进行澄清。

最后一点有点难以理解。你能添加一个带注释的屏幕截图或图表来演示这种情况吗?我刚想出来——我会把它作为一个单独的答案发布,并添加我的意思的图像(一旦我回家),以防其他人也有同样的问题。
// Create a dummyMasterView from the image and add it as a subview of the main
// window so it appears behind the current visible view while panning
UIWindow* mainWindow = [[UIApplication sharedApplication] keyWindow];
UIImageView* dummyMasterView = [[UIImageView alloc] initWithImage:dummyMasterImage];
UIView* mainWindowSubview = mainWindow.subviews[0];

 //Add dummyMaster to main window subview.
[mainWindowSubview addSubview:self.dummyMasterView];

 //Move it to the back so it doesn't cover up currentView
[mainWindowSubview sendSubviewToBack:self.dummyMasterView];