iPhone - 可以使 ViewController 透明或使视图从底部滑入吗?
Posted
技术标签:
【中文标题】iPhone - 可以使 ViewController 透明或使视图从底部滑入吗?【英文标题】:iPhone - Possible to make ViewController seethrough or make a view slide in from bottom? 【发布时间】:2011-08-31 20:04:24 【问题描述】:我正在编写一个应用程序,我希望视图/viewController 从底部滑入。
我尝试过使用“presentModalViewController”方法。问题是我需要新的 viewController 是透明的,有什么办法吗?
我也尝试过使用以下代码切换到一个背景是沸腾的视图,而不是 viewController:
[UIView beginAnimations:@"SlideInFromBottom" context:nil];
[UIView setAnimationDuration:0.2];
[UIView setAnimationDelegate:self];
[UIView setAnimationRepeatCount:0];
[UIView setAnimationRepeatAutoreverses:NO];
if (self.interfaceOrientation == UIInterfaceOrientationPortrait)
ToolbarView.frame = CGRectMake(0, 44, 320, 460);
ToolbarView.frame = CGRectMake(0, 0, 320, 460);
else if (self.interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
ToolbarView.frame = CGRectMake(0, 44, 320, 460);
ToolbarView.frame = CGRectMake(0, 0, 320, 460);
else if (self.interfaceOrientation == UIInterfaceOrientationLandscapeLeft)
ToolbarView.frame = CGRectMake(0, 44, 480, 300);
ToolbarView.frame = CGRectMake(0, 0, 480, 300);
else if (self.interfaceOrientation == UIInterfaceOrientationLandscapeRight)
ToolbarView.frame = CGRectMake(0, 44, 480, 300);
ToolbarView.frame = CGRectMake(0, 0, 480, 300);
问题是,如果从纵向切换到横向,它不会对齐,并且每次旋转我的设备后第一次切换视图时动画看起来都很糟糕,因为它需要对齐。
所以任何建议将不胜感激:)
PS:我试图加载的视图只包含一个工具栏。
【问题讨论】:
【参考方案1】:如果你想做自己的动画,你需要这样设置:
ToolbarView.frame = START POSITION
[UIView beginAnimations: ...];
ToolbarView.frame = END POSITION
[UIView commitAnimations];
换句话说,“开始”查看视图并确定起始位置; "commit" 再次查找并确定最终位置。
你不应该搞乱interfaceOrientation; ToolbarView 的方向将与其父视图匹配,因此只需将其添加为顶视图控制器视图的子视图即可。
最后,您可能想查看 UIControl 的 inputView
属性。基本上,您可以制作一个自定义控件,如果它成为第一响应者,ios 将负责从屏幕底部向上滑动 inputView。 (如果你想走这条路,你必须做更多的研究,因为它超出了这个问题的范围。)
【讨论】:
使用你的代码仍然给我同样的问题......当我旋转我的设备时,工具栏在屏幕之外 您应该启动一个新的一次性项目来隔离此代码。首先,让视图以纵向模式从底部向上滑动。然后,看看它是否可以旋转。如果您遇到问题,发布代码并寻求帮助会更容易。事实上,很难判断可能出了什么问题。以上是关于iPhone - 可以使 ViewController 透明或使视图从底部滑入吗?的主要内容,如果未能解决你的问题,请参考以下文章
swift 中,viewcontroll如果跳转到tabBar页面,我是有一个返回首页的按钮,首页就是登录页面之的页面
当 touchUpInside Back 按钮带有 [self.view removeFromSuperview] 时,上一个视图无响应