Я пишу пользовательскую клавиатуру для iOS 8. Мой основной UIView возвращает {{0, 0}, {0, 0}}
в моем методе viewDidLoad
. Я попытался получить CGRect с помощью view.frame и bounds, но оба возвращают 0. Однако, если я использую эти же методы для получения координат моего представления в методе viewDidAppear
, они возвращаются нормально: {{0, 0}, {320, 216}}
. Проблема здесь в том, что viewDidAppear запускается после didLoad, поэтому я не могу получить размер из didAppear и использовать его в didLoad. Вот мой вопрос:
Почему фрейм self.view возвращает 0 в viewDidLoad
? Разве его размер не должен быть установлен здесь? Здесь (viewDidLoad) я должен выполнять большую часть своей инициализации и настройки пользовательского интерфейса, верно? У меня есть умеренный опыт работы с 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. Ничто, кажется, не имеет значения.