У меня есть контроллер вида и вид. Затем я создаю UIImageView, созданный с помощью IB, и позиционирую его с помощью инспектора IB. Если для фрейма UIImageView установлено значение x, а для координаты y - 0, изображение будет размещено в верхнем левом углу представления ниже строки состояния.
Если я затем реализую метод viewDidLoad контроллера представления и установлю положение кадра UIImageView, используя:
myimageview.frame = CGRectMake(0, 0, 50, 50);
Это те же координаты, которые определены для UIImageView в IB, изображение перемещается вверх под строкой состояния. Похоже, что координаты, заданные с помощью кода, относятся к окну, а не к родительскому представлению, как показано IB.
Кто-нибудь знает, почему между IB и кодом существует расхождение?
Полезная информация об отладке:
Примечание. Ширина и высота представления изображения на самом деле составляет 35x37. Вышеуказанные размеры были только для упрощения оригинального вопроса.
Информация о кадре перед установкой в коде:
2011-03-15 13:15:34.249 MyAPP [98288:207] {{0, 49}, {35, 37}}
Информация о кадре после установки его в коде:
2011-03-15 13:15:34.250 MyAPP [98288:207] {{0, 0}, {35, 37}}
Как определено в Интерфейсном Разработчике:
Как вы можете видеть, IB говорит, что координаты UIImageView X и Y равны 0, 0. Хотя в приведенной выше отладочной информации сказано, что на самом деле это 0, 49.