菜鸟教程小白 发表于 2022-12-13 09:04:54

iphone - 设备方向 - 以合法方式更改(iOS 4.0+)


                                            <p><p>我的应用程序有导航栏,其中第一个屏幕返回"is"方向,第二个屏幕根据用户在第一个屏幕中选择的内容设置为某个方向。从第 2 个屏幕返回第 1 个屏幕后,如果用户手持设备为纵向但界面为横向,则第 1 个屏幕设置为横向。发生这种情况是因为 </p>

<pre><code>(BOOL)shouldAutorotateToInterfaceOrientation(UIInterfaceOrientation)interfaceOrientation
</code></pre>

<p>仅在更改设备方向后调用。</p>

<p>我想检查什么是设备方向 atm 并将界面方向设置为此。
试过了:</p>

<pre><code>//1st method:
UIViewController *rotateTheScreen = [init];
;
;
;

//2nd method:
UIInterfaceOrientation interfaceOrientation = self.interfaceOrientation;

//3rd method:
UIInterfaceOrientation orientation = [ orientation];
</code></pre>

<p>第一个表现得很奇怪,除了从界面方向=横向和设备方向=横向返回之外,旋转所有情况(这是一个错误,他旋转到横向)
第二次检查界面,就像名字所说的那样,但对我的问题不起作用
据我所知,第三个是私有(private)的,Apple 拒绝使用它的应用程序。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>看看这个<a href="https://stackoverflow.com/questions/5030315/how-to-constrain-autorotation-to-a-single-orientation-for-some-views-while-allow" rel="noreferrer noopener nofollow">thread</a> .
基本上,没有办法强制设备方向<em></em>让您的应用程序获得 Apple 的批准。</p>

<p>简而言之,该方法存在,但它是 <code>UIDevice</code> 类的未记录方法。</p>

<pre><code>[ setOrientation: UIInterfaceOrientationLandscapeRight animated:YES];
</code></pre>

<p>这会给出一个编译器警告,您可以使用一个类别来消除它。</p>

<pre><code>@interface UIDevice (MyAwesomeMethodsThatAppleWillNeverAllowMeToUse)
    -(void)setOrientation:(UIInterfaceOrientation)orientation animated:(BOOL)animated;
    -(void)setOrientation:(UIInterfaceOrientation)orientation;
@end
</code></pre>

<p>另外,有人说您可以使用 <code>performSelector</code> 间接调用这些方法来绕过 Apple 的静态代码分析,您可以在评论 <a href="https://stackoverflow.com/questions/181780/is-there-a-documented-way-to-set-the-iphone-orientation/1850462#1850462" rel="noreferrer noopener nofollow">here</a> 中阅读。 .</p></p>
                                   
                                                <p style="font-size: 20px;">关于iphone - 设备方向 - 以合法方式更改(iOS 4.0&#43;),我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/7280464/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/7280464/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: iphone - 设备方向 - 以合法方式更改(iOS 4.0&#43;)