2014-09-25 25 views
0

所以,我們正在使用第三方HUD模塊。它已經有點鬆動了,爲了讓它彈出所有的東西,我擴展它以使用代碼顯示自己HUD popup的旋轉

[[[[[UIApplication sharedApplication] keyWindow] addSubview:self.view];

但是,在橫向模式或上下顛倒的彈出窗口出現旋轉(或更準確地說而不是旋轉,始終與設備對齊,而不是接口)。我在的iOS相當新的,所以我不知道這是爲什麼,但我添加了一些代碼,以彌補

bool go = false; 
    float angle = 0.0; 

    if (mode == OLM_LandscapeLeft) // I calculate this further above, it works 
    { 
     go = true; 
     angle = 90; 
    } 

    [[[UIApplication sharedApplication] keyWindow] addSubview:self.view]; 

    if (go) 
    { 
     float rads = (angle)/180 * M_PI; 
     CGAffineTransform transform = CGAffineTransformRotate(CGAffineTransformIdentity, rads); 
     self.view.transform = transform;  
    } 

這似乎沒有任何效果,我是否適用之前或之後keyWindow.addSubview變換。

是否有正確的或至少有效的方法來做到這一點?如果有人能告訴我爲什麼這種addSubView似乎忽略了界面方向,那就太好了。

回答

0

也許你在那裏使用UIDeviceOrientation,但應該使用UIInterfaceOrientation。

您可以收到這樣的信息:

[[UIApplication sharedApplication] statusBarOrientation] 

和Makros:

UIInterfaceOrientationIsLandscape 
UIInterfaceOrientationIsPortrait 

這樣你就不必使用:

OLM_LandscapeLeft // might have a computation bug 
+0

我通過使用UIInterfaceOrientation statusBarOrientation來計算我的變量OLD_LandscapeLeft。通過斷點驗證工作。轉換已應用,但彈出視圖仍以設備方向顯示。推測,如果上面的代碼中沒有明顯的錯誤,我很沮喪。到目前爲止,不是iOS的粉絲,行爲往往沒有意義。 – Chris 2014-09-25 16:46:05

+0

但是,謝謝你的回答/ – Chris 2014-09-25 16:46:30

+0

你是否正確設置視圖框架?愚蠢的問題,但緩慢的調試;-) – fat 2014-09-25 16:48:38