- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我可以看到这是困扰很多人的事情:/
我有一个 UITabBarController,它有 4 个 viewController,全部都是 UINavigationController 类型。导航 Controller 之一将 View Controller 推送到其堆栈上,该 View Controller 应以横向模式/方向呈现。
viewController 是一个图表,它是应用程序中景观唯一有意义的地方。 (当出现 UITabBar 时,我会隐藏它,以免让用户相信这在任何地方都有效)
为了使 UITabBarController 正确响应方向的变化,其所有 viewController 需要从委托(delegate)方法返回相同的值:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
因此,为了适应这种行为,我在属于 UITabBarController 的所有 viewController 中实现了此方法:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
BOOL canRotate = [defaults boolForKey:@"can_rotate"];
return canRotate;
}
现在的“技巧”是,当我的 can-be-landscape viewController 被推送时,我会这样做:
- (void) viewWillAppear:(BOOL)animated {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setBool:YES forKey:@"can_rotate"];
[defaults synchronize];
}
当它弹出时,我这样做:
- (void) viewWillDisappear:(BOOL)animated {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setBool:NO forKey:@"can_rotate"];
[defaults synchronize];
}
这个效果非常好。当 viewController 位于堆栈上时,我可以旋转设备, View 也会随之旋转。
但是问题是,如果用户在横向模式下点击导航栏上的“后退”按钮,从而将 viewController 弹出到前一个 viewController,那么这个“旧”viewController 当然也是处于横向模式。更糟糕的是,因为我将 BOOL 设置为 NO,所以当我将设备定向为纵向模式时,这个“旧”viewController 无法旋转回去。
有没有办法更新所有内容,以便当我弹出可横向模态视图 Controller 时,我的其他 View Controller 都不会处于横向模式?
我有点担心,如果这可以从横向到纵向完成,那么从纵向到横向也应该是可能的,从而使我的“黑客”变得不必要..但如果不能,那么我又回到了原点:/
希望我很接近并且有人可以帮助我到达那里,谢谢:)
最佳答案
我想我可以简化整个事情......
- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation {
return NO;
}<p></p>
<p>-(void) viewDidAppear:(BOOL)animated {
[UIView beginAnimations:@"View Flip" context:nil];
[UIView setAnimationDuration:0.5f];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];</p>
<pre><code> self.view.transform = CGAffineTransformIdentity;
self.view.transform = CGAffineTransformMakeRotation(90.0*0.0174532925);
self.view.bounds = CGRectMake(0.0f, 0.0f, 480.0f, 320.0f);
self.view.center = CGPointMake(160.0f, 240.0f);
</code></pre>
<p>// [UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationLandscapeRight;</p>
<pre><code>[UIView commitAnimations];
[super viewDidAppear:animated];
</code></pre>
<p>}</p>
<p></p>
不会自动旋转任何内容,但您可以手动旋转要移动的 View 。如果您不需要 View 中的键盘支持,则无需更改 statusBarOrientation。
如果您并不总是希望旋转该 View ,那么您会遇到一个稍微困难的问题 - 您可能需要检查加速度计值以找出手机的方向(或者可能暗示手机的方向)已通过调用 shouldAutotateToInterfaceOrientation 进行转换,然后在需要时调用转换代码。
关于iphone - UITabBarController 与 viewControllers 利用不同的方向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3009206/
我正在开发一个广播流应用程序,应用程序底部有 2 个 UITabBarController 按钮。一种用于直播,一种用于前 40 名列表。 我为这两个选项卡使用了一个通用的 StreamingView
我有一个 UINavigationController在我的 UITabBarController 的根目录中.我还有一个 UITabBarController我现在在现有的 UITabBarCont
我最近升级到 xcode 4。我的应用程序使用 tabbarcontroller。在旧的 xcode 3.x 中,您可以根据此屏幕截图将选项卡更改为不同类型: 根据我在研究此问题时收集到的信息,xco
我使用包含 3 个项目的 Storyboard创建了一个 UITabBarController,前两个是 View Controller 。我需要第三项指向另一个 UITabBarController
好的,这就是场景: 我有一个选项卡栏应用程序,每个选项卡中都有一个 UINavigationController。假设我有两个选项卡:“主页”和“退出”。在“主页”中,用户遵循基于 UINavigat
我有自己的 UITabBarViewController 子类。是否可以更改所有嵌入式 View Controller View 的框架,以便自己的 UITabBarViewController Vi
滚动时选择顶部的菜单项。我希望用户突出显示一个项目,然后单击它以选择它。 -> 当用户移动到其他菜单项时,选定的蓝色会随之移动(跟随光标)。如果用户单击该项目,则选定的蓝色将被新项目替换,如果不是在用
我正在尝试以编程方式更改我的应用程序中标签栏项目的名称。 在我的 Storyboard 我有一个 UITabBarController 设置为初始 View ,层次结构如下: UITabBarCont
我正在使用包含 3 个项目的 UITabBarController,并且很好奇如果我位于第二个或第三个选项卡上,如何从第一个选项卡访问方法。我遇到的问题是我在第一个选项卡上有一个 UIImageVie
我希望在 iOS 中实现一个自定义选项卡栏,其中所选项目的尺寸大于其余选项卡的大小,并查看类似于此屏幕截图的内容。 有人可以指出如何最好在 Swift 中完成此任务的教程吗? 最佳答案 我多次面临这个
我正在制作一个自定义的东西,它的工作方式应该与 UITabBarController 类似——一个管理子 ViewController 的 UIViewController。父 UIViewContr
我有一个 viewController,它正在作为 UITabBarController 上的选项卡加载。 我如何知道在 viewController 类中,有多少区域可用于显示此 viewContr
我想在UITabbarController中输入一个按钮来处理事件作为instagram应用程序的标签栏。 此链接中的图片: http://itunes.apple.com/us/app/instag
我有一个 UIViewController,其中包含一个带有三个选项卡的 UITabBarController(每个选项卡都是一个 UINavigationController)。 我遇到的问题是,在
我在使用 UITabBarController 时遇到了真正的问题。我追求的结果如下:1)在纵向模式下,一个简单的基于选项卡栏的应用程序(带有导航栏)没什么特别的。2)在横向模式下,我想使用自己的 U
UITabBarController 不允许横向。所以我使用了 UITabBarContoller 的子类(称为 RotatingTabBarController)。其唯一目的是通过向 shouldA
是否可以用动画隐藏它? 最佳答案 UITabBar 继承自 UIView,因此您可以像使用标准 UIView 一样隐藏它并为其设置动画。 - (void) hideTheTabBarWithAnima
UITabBarController是否可以在代码中选择选项卡?就像UINavigationController一样我们可以使用popViewController弹回rootViewControlle
我需要更改 UITabBarController 的“更多”按钮显示的列表的字体大小和背景颜色。是否可以 ?我该怎么做 ?非常感谢。 最佳答案 UITabBarController 有一个名为 mor
我正在尝试将股票UITabBar的高度更改为44px,类似于Tweetbot的标签栏高度。我也看到其他一些应用程序也可以这样做。 但是,当我尝试设置高度时,它仍然保持不变 self.tabBar.fr
我是一名优秀的程序员,十分优秀!