iOS 8 用のカスタム キーボードを作成{{0, 0}, {0, 0}}
しています。メインの UIView がメソッドで返されますviewDidLoad
。view.frame と bounds を使用して CGRect を受信しようとしましたが、どちらも 0 を返します。ただし、同じメソッドを使用してメソッドでビューの座標を取得すると、正常viewDidAppear
に返されます: {{0, 0}, {320, 216}}
ここでの問題は、didLoad の後に viewDidAppear が実行されるため、didAppear からサイズを取得して didLoad で使用できないことです。これが私の質問です:
self.view のフレームが 0 を返すのはなぜviewDidLoad
ですか? そのサイズはすでにここに設定されているべきではありませんか? これ (viewDidLoad) は、初期化と UI 設定のほとんどを行うべき場所ですよね? Xcode の使用経験は中程度です。
私はこれをswiftでプログラミングしていますが、これは問題ではないはずですが(?)、注目に値すると思いました。Obj-C での回答は問題ありません。
編集:次のクラスでまったく新しい Xcode プロジェクトとターゲットを作成しましたが、同じエラーが発生します。
import UIKit
class KeyboardViewController: UIInputViewController {
override func viewDidLoad() {
super.viewDidLoad()
println(self.view.frame) // returns (0.0,0.0,0.0,0.0)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
override func viewDidAppear(animated: Bool) {
println(self.view.frame) // returns (0.0,0.0,320.0,216.0)
}
}
私は、シミュレーターと物理デバイスで 6 から 4S までの範囲でテストしました。何も違いはないようです。