我正在为 iOS 8 编写自定义键盘。我的主 UIView{{0, 0}, {0, 0}}
在我的viewDidLoad
方法中返回。我尝试使用 view.frame 和 bounds 接收 CGRect,但都返回 0。但是,如果我使用这些相同的方法在它们返回的方法中检索我的视图坐标,viewDidAppear
它们返回正常:{{0, 0}, {320, 216}}
。这里的问题是 viewDidAppear 在 didLoad 之后运行,所以我无法从 didAppear 中检索大小并在 didLoad 中使用它。这是我的问题:
为什么 self.view 的框架在中返回 0 viewDidLoad
?它的大小不应该在这里设置吗?这 (viewDidLoad) 是我应该进行大部分启动和 UI 设置的地方,对吗?我在 Xcode 方面有中等经验。
我正在快速编程,虽然这不重要(?)我认为值得注意。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。似乎没有什么不同。