菜鸟教程小白 发表于 2022-12-12 23:50:15

ios - UISplitview 方向在 iOS 5 和 iOS 5.1 中没有改变


                                            <p><p>我在我的应用程序中使用了 Split View。<br/>
当我在 iOS 6 模拟器中运行我的应用程序时,它会随着方向的变化而旋转并且运行良好,但是当我在 iOS 5 或 iOS 5.1 模拟器中运行相同的应用程序并且我改变模拟器的方向但 Split View不会随着方向的变化而变化。<br/>
我也加了代码</p>

<pre><code>- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown || interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}

-(BOOL)shouldAutorotate
{
    return YES;
}
</code></pre>

<p>我使用以下代码添加 Split View
    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
    {
    返回是;
    } </p>

<p>主视图和详细 View 中的上述方法。 </p>

<p>我使用以下代码添加了 Split View</p>

<pre><code>if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
   // obj_PageControlViewController = [initWithNibName:@&#34;PageControlViewController-iPad&#34; bundle:nil];

   MasterViewController *masterViewController = [ initWithNibName:@&#34;MasterViewController_iPad&#34; bundle:nil];
   UINavigationController *masterNavigationController = [ initWithRootViewController:masterViewController];

   DetailViewController *detailViewController = [ initWithNibName:@&#34;DetailViewController_iPad&#34; bundle:nil];
   UINavigationController *detailNavigationController = [ initWithRootViewController:detailViewController];

   masterViewController.detailViewController = detailViewController;

   self.splitViewController = [ init];
   self.splitViewController.delegate = detailViewController;
   self.splitViewController.viewControllers = @;
   TabBarAppDelegate *appDelegate = (TabBarAppDelegate *)[ delegate];
   ;

}
</code></pre>

<p>但它不起作用。任何人都可以帮助我吗? </p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>你说你添加了 <code>shouldAutorotateToInterfaceOrientation:</code> 但你没有说 <em>在哪里</em> 你添加了它。要在 iOS 5.1 或更早版本中自动旋转 UISplitViewController,您必须在 Split View Controller 的 <em>两个</em>subviewController 的 ViewController 中提供 <code>shouldAutorotateToInterfaceOrientation:</code>(主视图 Controller 和详细 ViewController )。</p>

<p>假设 Split View Controller 是您的应用程序的顶级(根) ViewController ,这将起作用,由 Master-Detail 模板设置。</p>

<p>哦,省点麻烦:在 <code>shouldAutorotateToInterfaceOrientation:</code> 中,只返回 YES。在 iPad 上,您总是希望自动旋转。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - UISplitview 方向在 iOS 5 和 iOS 5.1 中没有改变,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/13506469/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/13506469/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - UISplitview 方向在 iOS 5 和 iOS 5.1 中没有改变