查看完整版本: [-- 屏幕旋转问题 --]

CocoaChina 开发讨论区 -> iOS开发讨论区 -> 屏幕旋转问题 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

laigb 2010-06-13 09:09

屏幕旋转问题

想请问一下,我在一个Controller加载之前使用这句
复制代码
  1. [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight];

来设置时,为什么到了里面还是保持着竖屏的模式,而且显示的不对.当我再次旋转设备,然后再返回我指定的方向,它就显示正确了.
也就是说这个旋转不能及时.
复制代码
  1. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
        // Return YES for supported orientations
        return (interfaceOrientation == UIInterfaceOrientationLandscapeRight||
                interfaceOrientation==UIInterfaceOrientationLandscapeLeft) ;
    }

我这儿也有指定方向.
有人可以告诉我怎么办不.

qdvictory 2010-06-13 09:13
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
这个方法是手机旋转的时候调用的。
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight];
这句是设置的状态栏。

laigb 2010-06-13 09:19

那两个方法我知道是做什么的.
可是就达不到想要的效果.
我想视图一加载时就设置为横屏模式什么的.而且相应的视图还应该显示正确.

qdvictory 2010-06-13 09:21
在要旋转的viewcontroller实现shouldAutorotateToInterfaceOrientation
在别的viewcontroller也同样实现shouldAutorotateToInterfaceOrientation

laigb 2010-06-13 09:23
那这样不是只有被动翻转嘛,只有转到那个方向时才会翻转.我想一开始就要让它翻转好.

qdvictory 2010-06-13 09:26
引用
引用第4楼laigb于2010-06-13 09:23发表的 回 3楼(qdvictory) 的帖子 :
那这样不是只有被动翻转嘛,只有转到那个方向时才会翻转.我想一开始就要让它翻转好.   


不知你具体要要什么效果。。

laigb 2010-06-13 09:29
不好意思,可能说的有点不明白.
我想我的View一加完完就是横屏模式,而且我也限定它只能为横屏模式.
我目前就只能在再次手动旋转之后才会正常.而并不能自动翻转到我想要的效果.

qdvictory 2010-06-13 09:42
[attachment=11866]
这样的?

laigb 2010-06-13 09:56
复制代码
  1. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
        // Return YES for supported orientations
        return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight);
    }

只有这么一句就可以了.
那我再找一下是不是有其它的controller的这个方法在影响着它.谢谢了.

laigb 2010-06-20 17:34
还是很纠结,今天继续上次的问题.
今儿发现这个方法有执行,却不切换界面,很是奇怪.
现象发现在我用这个方法旋转了一个controller,之后我在这个之上添加一个controller,同样是使用这个方法来实现切换,结果就是不会自动切换,非要我将设备转一圈后才有正常的响应.
不知大家有没有遇到过这种问题.
搜索了一下国外的网站,有类似的问题不过没有找到适合的方法解决.

leon 2010-06-21 09:31
我是这样做的,lz可以尝试一下。
在需要旋转的viewController的viewWillAppear:方法中,设置view的frame和transform
- (void)viewWillAppear:(BOOL)animated
{
    [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight];
    [self.view setFrame:CGRectMake(0, 0, 480, 320)];
    [self.view setTransform:CGAffineTransformMakeRotation(M_PI/2)];
}

shouldAutorotateToInterfaceOrientation方法应该是只针对自动旋转的。如果手动改statusbar的方向,对device的orientation信息不会产生影响。

希望对您有所帮助。

laigb 2010-06-21 12:28
引用
引用第10楼leon于2010-06-21 09:31发表的  :
我是这样做的,lz可以尝试一下。
在需要旋转的viewController的viewWillAppear:方法中,设置view的frame和transform
- (void)viewWillAppear:(BOOL)animated
{
    [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight];
.......



非常感谢.
我昨天也用类似的方法来旋转一下.
可以达到效果.


查看完整版本: [-- 屏幕旋转问题 --] [-- top --]



Powered by PHPWind v7.5 SP3 Code ©2003-2010 PHPWind
Gzip disabled

You can contact us