2016-07-26 2 views
2

あるときに、現在私のアプリは、ポートレートモードでは、このように見えるアイコンを回転させる: enter image description hereスウィフトは、iPadが横長モードで

が、私のiPadが横長モードであるとき、私は私のアイコンは次のようになりたい: enter image description here

今ではそれは風景モードで以下のようになります。

enter image description here

だから私の質問は:どのように私はアイコンを回転させることができますか?私はもっ​​とアイコンが動かなければならない何かを必要としません

+0

私はそれを取得しません。あなたがストーリーボードでサイズクラスを使用している場合、これは問題ではありません。すべてのビューと画像が適切に回転します。 –

+0

ええ、彼らは回転しますが、それはそのようには見えません – mafioso

+0

私の投稿を編集しました。今のように見えます。 – mafioso

答えて

1

viewDidLoadメソッドにこのコード行を追加します。NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(rotate), name: UIDeviceOrientationDidChangeNotification, object: nil)
、これは関数です。

func rotate(){ 
if UIDevice.currentDevice().orientation == UIDeviceOrientation.LandscapeLeft { 
    self.takephoto.transform = CGAffineTransformMakeRotation(CGFloat(M_PI_2)) 
    self.recordButton.transform = CGAffineTransformMakeRotation(CGFloat(M_PI_2)) 
} else if UIDevice.currentDevice().orientation == UIDeviceOrientation.LandscapeRight { 
    self.takephoto.transform = CGAffineTransformMakeRotation(CGFloat(-M_PI_2)) 
    self.recordButton.transform = CGAffineTransformMakeRotation(CGFloat(-M_PI_2)) 
} else if UIDevice.currentDevice().orientation == UIDeviceOrientation.Portrait { 
    self.takephoto.transform = CGAffineTransformMakeRotation(CGFloat(0)) 
    self.recordButton.transform = CGAffineTransformMakeRotation(CGFloat(0)) 
} else if UIDevice.currentDevice().orientation == UIDeviceOrientation.PortraitUpsideDown { 
    self.takephoto.transform = CGAffineTransformMakeRotation(CGFloat(M_PI)) 
    self.recordButton.transform = CGAffineTransformMakeRotation(CGFloat(M_PI)) 
} 
} 
0

ただポートレートモードをサポートすることから始まります。 https://stackoverflow.com/a/12086463/4209778

その後、あなたは(+/-)90度でCGAffineTransformMakeRotationを使用して、アイコンを回転させることができ、あなたの方向に基づいて:あなたは、あなたのようなコントローラーでUIDeviceOrientationDidChangeNotificationのために観察することができます。使用して、ビューコントローラのオーバーライドviewWillTransitionToSize:withTransitionCoordinator:と丸暗記あなたのイメージで

0

imageView.transform = CGAffineTransformMakeRotation(CGFloat(M_PI_2))

EG:

override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) { 
    super.viewWillTransitionToSize(size, withTransitionCoordinator: coordinator) 

    let isPortrait = size.height > size.width 
    imageView.transform = CGAffineTransformMakeRotation(CGFloat(isPortrait ? 0 : M_PI_2)) 
} 
関連する問題