Свойство центра iPhone UIView возвращает плохую стоимость - PullRequest
0 голосов
/ 18 февраля 2011

Я работаю с приложением на основе View, которое компилируется для iPhoneOS 4.0 Simulator (Debug), Xcode 3.2.3.

У меня есть UIImageView, imgView, центр которого я хочу координаты. Я получаю их так:

CGPoint imgviewcoords=[imgView center];

Это не приводит к ошибкам во время компиляции, но когда я NSLog координаты, как это:

NSLog(@"x: %i, y:%i", imgviewcoords.x, imgviewcoords.y);

Я получаю этот вывод:

x: 0, y:108762

Он показывает 0 для координаты x в imgView (что я знаю, что это неправильно, потому что imgView находится в верхней части середины экрана в Интерфейсном Разработчике) и какое-то гигантское невозможное число, которое далеко за пределами экрана iPhone для координата y (координата y в выходных данных выше может быть не совсем правильной, но это какое-то гигантское число, подобное этому). Я получаю точно такой же вывод каждый раз. ImgView правильно связан с выходом владельца файла, и я даже могу изменить его изображение, используя

[imgview setImage:[UIImage imageNamed:@"./blahblah.png"]];

Я просто не могу правильно определить координаты его центра. Я также попробовал

CGPoint viewcoords=[[imgView frame] origin]; 

и это дает мне те же ошибочные координаты в imgviewcoords, как описано выше. Это происходит с каждым элементом управления, имеющимся в основном UIView моего приложения, за исключением того, что координата y немного отличается для каждого элемента управления. Что я делаю не так?

@ Владимир: Спасибо за предложение изменить спецификаторы формата NSLog. Тем не менее, я не думаю, что проблема заключается в выходе. Я думаю, что вызов [imgView center] не работает. Я использую CGPoint, который возвращается из [imgView Center], чтобы установить центр другого UIImageView, и этот UIImageView просто перемещается в самый верхний левый угол экрана вместо перемещения в центр imgView. Я предполагаю, что это вызов [imgView center], который возвращает неверный набор координат.

1 Ответ

4 голосов
/ 18 февраля 2011

% i спецификатор формата ожидает целочисленное значение, а компоненты CGPoint имеют тип CGFloat, попробуйте использовать правильный спецификатор (% f) - возможно, вы получите правильный вывод:

NSLog(@"x: %f, y:%f", imgviewcoords.x, imgviewcoords.y);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...