У меня есть эта хроническая проблема с разработкой пользовательского интерфейса iPhone, когда иногда кажется, что представления появляются на экране в месте, отличном от того, о котором сообщает их свойство frame. Вот что я делаю, чтобы попытаться решить проблему:
UIView *currentView = self.view;
while (currentView!=nil)
{
NSLog(@"frame: %f,%f,%f,%f", currentView.frame.origin.x,
currentView.frame.origin.y,
currentView.frame.size.width,
currentView.frame.size.height);
currentView = currentView.superview;
}
I ожидайте это должно показать мне координаты и размер каждого элемента вверх по иерархии от данного представления к корневому элементу UIWindow приложения, с координатами для каждого элемента относительно его родитель. Однако, похоже, это не так. В моей нынешней ситуации у меня есть пользовательский интерфейс, который я пытаюсь отлаживать, когда каждый раз, когда я поворачиваю устройство, весь пользовательский интерфейс сдвигается вверх или вниз на 20 пикселей, но кодовый блок выше показывает точно те же цифры каждый раз. Я попытался позвонить по вышеуказанному коду после второй задержки, но цифры все равно выходили одинаковыми каждый раз.
Кто-нибудь знает лучший способ проверки экранных координат элементов пользовательского интерфейса? Если я могу определить, когда кто-то не прав, я могу компенсировать проблему, когда она появляется.