- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
这是我在 stackoverflow 上的第一篇文章。我是 iOS 开发新手,我的母语不是英语,所以我会尽力解释我的问题。
问题:
我已将两个 View 添加到我的 AppDelegate 窗口,我想使用以下方法从一个 View 翻转到另一个 View :
UIView transitionFromView:toView:
第一个 View (MainScreenView) 有自己的 ViewController
。在 MainScreenView .xib 文件上,我有一个按钮,其中包含一个调用在我的 AppDelegate 中实现的方法“goShow”的操作。在该方法中,我使用 UIView transitionFromView:toView:
转换到第二个 View 。到目前为止一切正常。我的第二个 View ( ScrollView )在我的 AppDelegate 中以编程方式声明,其中有一堆图片(picturesViewController),最上面有一个 UIPinchGestureRecognizer
。
我正在使用手势识别器返回到我的 MainScreenView。这就是问题所在。当我在 ScrollView 上做捏合手势时,MainScreenView.view
会立即出现在动画之前,因此翻转动画看起来不对。
我使用的代码是:
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
mainScreen = [[MainScreenViewController alloc] initWithNibName:@"MainScreenViewController" bundle: [NSBundle mainBundle]];
CGRect frame = self.window.bounds;
int pageCount = 10;
scrollView = [[UIScrollView alloc] initWithFrame:frame];
scrollView.contentSize = CGSizeMake(320*pageCount, 480);
scrollView.pagingEnabled = YES;
scrollView.showsHorizontalScrollIndicator = FALSE;
scrollView.showsVerticalScrollIndicator = FALSE;
scrollView.delegate = self;
[...] 'While' adding pictures to de scrollView
UIPinchGestureRecognizer *twoFingerPinch = [[[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(goBackToMain)] autorelease];
[scrollView addGestureRecognizer:twoFingerPinch];
[self.window addSubview: scrollView];
[scrollView setHidden:TRUE];
[self.window addSubview: mainScreen.view];
[self.window makeKeyAndVisible];
return YES;
}
-(void) goShow{
[UIView transitionFromView:mainScreen.view
toView:scrollView
duration:0.5
options:UIViewAnimationOptionTransitionFlipFromRight | UIViewAnimationOptionShowHideTransitionViews
completion:NULL];
[UIView commitAnimations];
}
-(void) goBackToMain {
[UIView transitionFromView:scrollView
toView:mainScreen.view
duration:0.5
options:UIViewAnimationOptionTransitionFlipFromRight | UIViewAnimationOptionShowHideTransitionViews
completion:NULL];
[UIView commitAnimations];
}
我正在使用显示/隐藏 View 而不是 addSubview/removeFromSuperView
,因为我尝试添加和删除并在捏合手势中出现应用程序崩溃,这与动画失败的步骤完全相同。可能是同样的错误,但我找不到原因。任何帮助,将不胜感激。
谢谢。
好的。在 Adrian 的帮助下,这是解决我的问题的 UIPinchGesture 代码:
[...]
UIPinchGestureRecognizer *twoFingerPinch = [[[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(goBackToMain:)] autorelease];
[scrollView addGestureRecognizer:twoFingerPinch];
-(void)goBackToMain:(UIPinchGestureRecognizer *)recognizer {
if (recognizer.state == UIGestureRecognizerStateEnded)
{
[UIView transitionFromView:scrollView
toView:mainScreen.view
duration:0.4
options:UIViewAnimationOptionTransitionFlipFromRight | UIViewAnimationOptionShowHideTransitionViews
completion:nil];
[UIView commitAnimations];
}
最佳答案
首先,您不能将旧方法 beginAnimation
commitAnimation
与新 block 方法 transitionFromView
组合。
其次,当使用 block 方法动画时,请确保您使用的容器(可能是 UIView)将成为您要切换的两个 View 的父级。如果没有容器,您将改为对整个 View 进行动画处理。确保容器与将切换的 subview 具有相同的大小。
示例:
[container addSubView:frontView]; [container addSubView:backView]; [self.view addSubView:container]; [UIView transitionFromView:backView toView:frontView duration:0.5 options:UIViewAnimationOptionTransitionFlipFromRight completion:nil];
关于ios - UIView transitionFromView : toView: animation not working.,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9456362/
我正在尝试了解这些方法的功能。你能给我提供一个简单的用例来理解它们的语义吗? 以文档为例,convertPoint:fromView:方法描述如下: Converts a point from the
我读过这个iPhone - Get Position of UIView within entire UIWindow和其他人多次,但就是无法让我的应用程序向我输出某物在屏幕上的绝对位置。 我有一个
我想要相对于主窗口的坐标,因此我使用 convertRect:toView: 并将 nil 作为第二个参数: CGRect result = [self.view convertRect:addToL
我想做一个类似iOS主屏幕文件夹的动画,我必须知道“文件夹”的最终位置的帧: 我正在使用自定义过渡,这里是动画文件的代码: class FolderAnimationController: NSObj
我不太明白方法convertPoint:toView:。 在 Apple 的文档中写道 convertPoint:toView: Converts a point from the receiver’
我有一个带有自定义 TableCellViews 的 TableView,上面有 UILabels 和 UIButtons。当其中一个按钮被粘贴时,我想显示一个描述按钮文本的“工具提示”。 除了当我尝
我使用transitionFromView:toView:duration 在一个 View 和另一个 View 之间翻转。 我的源 View 位于其父 View 的中心。我还想将目标 View 居中
我正在阅读 View Controller Programming Guide for iOS这些天,它说: Because transitions can be canceled, you shou
这是我在 stackoverflow 上的第一篇文章。我是 iOS 开发新手,我的母语不是英语,所以我会尽力解释我的问题。 问题: 我已将两个 View 添加到我的 AppDelegate 窗口,我想
在布局约束下使用 [UIView transitionFromView:toView:...] 的正确方法是什么? 我想在 super View 中安装约束来约束 toView。在转换调用之前我不能这
我正在通过使用自定义过渡动画呈现下一个 View Controller 来进行相当简单的转场。 本质上,过渡创建了 toView 离开屏幕,然后将其从右侧滑到 fromView 上,而 fromVie
我尝试制作导航栏指示器 View 动画。布局有问题。 期望这样: 我的解决方案是将导航栏底部位置的位置转换为self.navigationItem.titleView。 导航栏指示器 View 应该属
在 UIView 容器中的两个 subview 之间切换时出现奇怪的错误。请注意,这两个 subview 是相同的 View Controller 类型(相同的 View ),唯一的区别是标签,它由属
目前,我正在尝试获取 UIWebView 的坐标。这个 webView 是 viewController View 的 subview 。 viewController 包含在 UINavigatio
我应该在 init 方法中还是在 didMove(toView:) 中以编程方式设置 SKScene(即创建子节点、将子节点添加到当前场景、布局等)? 最佳答案 是的,节点的初始化应该放在“init”
我使用模式转场将我的 UIBarButtonItem 链接到 XIB 中的 View Controller ,单击 UIBarButtonItem 后,出现以下错误,我找不到原因,任何人都请帮助我。谢
关于 transitionFromView:toView:duration:options:completion: Apple 文档在最后几行中这样说: This method modifies th
我正在编写一个方法,它应该接收一个点:'in_centre',它将在当前 View 的坐标系中(也作为另一个参数传递:'target') 我需要将这个点转换成窗口坐标。 文档说我应该通过将这里的第二个
我如何取消动画并开始使用 transitionFromView:toView:duration:options:completion?实际上我想要的是避免在动画被取消时调用完成 block ,只是因为
我有一个在横向模式下创建的 View (在旋转等很久之后)。 在这个 View 中,我想找到一个相对于主窗口的点。 以下代码在纵向模式下工作,但在横向模式下它仍然返回值,就好像它在纵向模式下一样。 C
我是一名优秀的程序员,十分优秀!