Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.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
Iphone UiView内部的UiView转换_Iphone_Objective C_Ipad_Uiviewcontroller_Interface Builder - Fatal编程技术网

Iphone UiView内部的UiView转换

Iphone UiView内部的UiView转换,iphone,objective-c,ipad,uiviewcontroller,interface-builder,Iphone,Objective C,Ipad,Uiviewcontroller,Interface Builder,这感觉像是一个初学者的问题,但由于我无法让它以预期的方式工作,我希望在那里的某个地方能够为我指出正确的方向 我试图实现的是视图在视图中的转换。 我基本上想用另一个视图(controller?!?)的内容替换视图中的一个视图 比如说,我有一本书的图像,我想在书中转换到另一个页面(例如从日历视图转换到详细的每日视图)。我只希望“图书内容”(白色内容区域)包含在转换中,而不是整个图书本身(整个屏幕) 我可以用相同的视图进行转换,没问题,但是我无法用完全不同的视图替换视图。 将视图放在单独的viewco

这感觉像是一个初学者的问题,但由于我无法让它以预期的方式工作,我希望在那里的某个地方能够为我指出正确的方向

我试图实现的是视图在视图中的转换。 我基本上想用另一个视图(controller?!?)的内容替换视图中的一个视图

比如说,我有一本书的图像,我想在书中转换到另一个页面(例如从日历视图转换到详细的每日视图)。我只希望“图书内容”(白色内容区域)包含在转换中,而不是整个图书本身(整个屏幕)

我可以用相同的视图进行转换,没问题,但是我无法用完全不同的视图替换视图。 将视图放在单独的viewcontroller中,或者将所有视图放在一个viewcontroller中并不重要,因此我还不能让它工作,但更糟糕的是,我已经没有想法了。 救命啊!请外面的人告诉我我做错了什么。 我们也非常感谢您的建议。 谢谢


Tom

检查中的
交换subviewsatindex:
方法。只需将要从和转换到的两个视图设置为另一个视图的子视图;然后在该父视图上调用此方法。

假设您有一个具有两个视图(a和B)的视图控制器。它们具有相同的帧,因此它们在控制器视图中占据相同的空间,以便显示一本书的页面。您希望显示其中一个并过渡到另一个

一种方法是将一个的alpha属性设置为1.0(不透明),另一个设置为0.0(透明)。因为可以设置此属性的动画,所以可以使用beginAnimations:context/commitAnimations从一个属性淡入另一个属性,或者使用docs advise之类的块方法之一


另一种方法是为两个视图中的帧更改设置动画。设置视图,使其中一个具有一个框架,以便它位于正确的显示位置,另一个具有相同的框架,但frame.origin.x等于frame.size.width-它将被隐藏,因为它不在屏幕上或隐藏在其他视图后面。通过将视图A的frame.origin.x设置为-frame.size.width,将帧B的frame.origin.x设置为显示位置x origin,在中设置帧动画。然后再次将(无动画)帧A的frame.origin.x设置为frame.origin.width,更新其内容,然后准备从右侧滑入另一页。

也许可以隐藏一个视图,然后使用UIView动画块显示另一个视图

[UIView beginAnimations:nil context:nil];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:view1.view cache:YES];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:view2.view cache:YES];
[UIView setAnimationDuration: 1.5];
[UIView commitAnimations];

view1.view.hidden = YES;
view2.view.hidden = NO;
编辑:这就是你要找的吗

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.5];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];

[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.view cache:YES];
[view1 viewWillDisappear:YES];
[view2 viewWillAppear:YES];

view1.view.hidden = YES;
view2.view.hidden = NO;
[view1 viewDidDisappear:YES];
[view2 viewDidAppear:YES];
[UIView commitAnimations];
或者,您可以使用类似以下内容:

[UIView animateWithDuration:0.5
                  delay:0.0 
                options:UIViewAnimationOptionTransitionFlipFromRight 
             animations:^{
                             [view1 removeFromSuperview];
                             [mySuperview addSubview:view2]; 
                         }
             completion:nil];

我错过了那个方法,但对我不起作用。无论如何,谢谢你的回答!嗨,伙计,是的,这就是我要找的。这只是不起作用,意味着view1将消失,直到view2不知从何处翻转过来。顺便说一句,苹果公司不赞成这种做法。我想知道如何使用基于块的动画设置动画停止代理??!?是的,有一种方法,我会寻找它,并在今天晚些时候让你知道。嗨,伙计,谢谢你的时间。试了一下,没有按预期工作。。当我有时间的时候,我必须回到过去。谢谢你,亲爱的,谢谢你的回答。我现在能够在所需的内容区域内进行“转换”(但不是真的)。然而,我现在没有做任何动画,因为我现在没有更多的时间来做这个。如果我使用单个视图执行transitionflip动画,它会将页面翻转过来并获得刷新的视图。这正是我在用另一个视图替换一个视图时想要的。。。放开一个视图,翻开血腥的一页(动画)并取回新视图。但是我不能让它工作……嗨,汤姆。在视频游戏中,通常会进行“双缓冲”,在更新隐藏视图的同时显示一个视图-翻转、更新隐藏视图,然后重复。您是在维护相同的两个视图,还是试图发布一个视图并创建一个新视图?我真的认为使用UIViewAnimationTransitionFlipFromRight显示的答案可以满足您的需要。