2016-03-29 11 views
0

iはIOS - ステータスバーの色 - iphoneの景観問題

let proxyViewForStatusBar : UIView = UIView(frame: CGRectMake(0, 0,self.view.frame.size.width, 20))  
proxyViewForStatusBar.backgroundColor=UIColor.purpleColor() 
self.view.addSubview(proxyViewForStatusBar) 

、肖像画では正常に動作し、ステータスバーの色を変更するために、これを使用してみました、私はiphoneの風景の中にそれを望んでいません。

ので、私はこの

override func didRotateFromInterfaceOrientation(fromInterfaceOrientation: UIInterfaceOrientation) { 


    let proxyViewForStatusBar : UIView = UIView(frame: CGRectMake(0, 0,self.view.frame.size.width, 20)) 



    if UIDevice.currentDevice().orientation.isLandscape.boolValue && UIDevice.currentDevice().userInterfaceIdiom == .Phone{ 

     proxyViewForStatusBar.backgroundColor = UIColor.clearColor() 
    }else { 
     proxyViewForStatusBar.backgroundColor=UIColor.purpleColor() 
    } 

    self.view.addSubview(proxyViewForStatusBar) 

} 

を試みたが、結果は厄介で、ステータスバーには、部分的に示しています。 enter image description here添付。

何か助けていただければ幸いです。

+1

はあなただけで、別の新しいプロキシビューを追加することはできません。クリアな背景がある場合は、既に存在するものを削除する必要があります。サブビューとして追加する前に参照を保持し、デバイスがランドスケープにあるときに参照を削除する必要があります。 – dan

答えて

1

あなたはviewProxyを2回追加しました。初めてそれは罰金を働かせます。しかし、別のビューを回転させると、ここに最後のビューが追加されます。

は、だからあなたは、ビューのグローバルを作成することができます

var proxyViewForStatusBar : UIView! 

ViewDidloadで:

proxyViewForStatusBar= UIView(frame: CGRectMake(0, 0,self.view.frame.size.width, 20))  
proxyViewForStatusBar.backgroundColor=UIColor.purpleColor() 
self.view.addSubview(proxyViewForStatusBar) 

回転するとき:

override func didRotateFromInterfaceOrientation(fromInterfaceOrientation: UIInterfaceOrientation) { 
    proxyViewForStatusBar.frame = CGRectMake(0, 0,self.view.frame.size.width, 20) 
    if UIDevice.currentDevice().orientation.isLandscape.boolValue && UIDevice.currentDevice().userInterfaceIdiom == .Phone{ 

     proxyViewForStatusBar.backgroundColor = UIColor.clearColor() 
    }else { 
     proxyViewForStatusBar.backgroundColor=UIColor.purpleColor() 
    } 

} 
関連する問題