14358


ローテートの時に、うまく動きません。

必要な関数やローテート時に呼び出される関数などあれば、教えていただけないでしょうか？

下記コードでは、縦横切り替え時に、正しく判定されませんが、現在の判定コードです。

iPad用ソフトをiPadでの起動時のみ、正しく動作します。ローテート時は、縦横反対のサイズでキーボードが表示されてしまいます。取得と再描画のタイミングが逆のようです。

iPhoneソフト用のソフトをiPadで強制表示するような周りが黒くなる画面でも、正しく表示されません。

[code]

    override func viewDidLoad() {
        super.viewDidLoad()
    
        bunPrint()
        btnTitle1()
        fFastBoot = false
        ...
    }
    
    override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
        super.viewDidLoad()
        bunPrint()
    }
    
    func bunPrint(){
        var myNativeBoundSize: CGSize = UIScreen.mainScreen().bounds.size
        let myNativeBoundSizeStrW: CGFloat = myNativeBoundSize.width
        let myNativeBoundSizeStrH: CGFloat = myNativeBoundSize.height
    
        var myWidth = myNativeBoundSize.width
        var myHeight = myNativeBoundSize.height
        print(myWidth)
        print(myHeight)
    
        // 向きの判定.
        if CGFloat(myNativeBoundSizeStrH) == CGFloat(1024.0) {
            myWidth = myNativeBoundSizeStrW / CGFloat(13)
            myHeight = myNativeBoundSizeStrH / CGFloat(20)
            print("iPad縦")
        } else if CGFloat(myNativeBoundSizeStrH) == CGFloat(768.0) {
            myWidth = myNativeBoundSizeStrW / CGFloat(13)
            myHeight = myNativeBoundSizeStrH / CGFloat(11)
            print("iPad横")
        } else {
            myWidth = myNativeBoundSizeStrW / CGFloat(10)
            myHeight = myNativeBoundSizeStrH / CGFloat(10)
            print("Nonエラー")
        }
        ...
    
        self.button11.frame = CGRectMake(0,3 + fPri, myWidth - CGFloat(2) ,myHeight - CGFloat(6))
        ...
    }
    
[/code]


CC BY-SA 3.0
2015-08-12T07:37:23.803
14314
2015-08-13T07:16:21.750
2015-08-13T04:24:39.983
10845
10845
question
ios swift xcode
カスタムキーボードで、画面の縦・横の時の再描画を正しくするには？


以下のコードでのみ、正しい動作が確認できました。

[code]

    private func isLandscape() -> Bool {
        // 現時点で Landscape表示が適当かどうかを判断する。
        let screenSize = UIScreen.mainScreen().bounds.size
        let screenH = screenSize.height
        let screenW = screenSize.width
        let isLandscapeNow =  !(self.view.frame.size.width ==
            screenW * ((screenW < screenH) ? 1 : 0) +
            screenH * ((screenW > screenH) ? 1 : 0))
        return isLandscapeNow
    }
    
[/code]

この関数を呼んで、縦横の判定を伝えることによって、正しく動作します。


CC BY-SA 3.0
2015-08-13T07:16:21.750
14358
2015-08-13T07:16:21.750
10845
14314
answer