ConvertPoint: fromView: хорошо работает на симуляторе, а не на устройстве
Я был рад видеть это: ответ на вопрос о том, как конвертировать точку подвью
и он отлично работал у меня на симуляторе.
Но по какой-то причине он не работает на устройстве...
Может быть, позиции позиций по-разному управляются устройством - или это просто еще одна тайна? Или (надеюсь), я написал это неправильно, и вы, ребята, можете помочь...
:)
здесь моя строка:
CGPoint yoel = [imagePressed.imageView convertPoint:imagePressed.frame.origin toView:nil];
Ответы
Ответ 1
OK. это был урок в разнице между% d и% f:)
по-видимому, он отлично работает.
Моя ошибка была у меня на симуляторе
DLog(@"yoel is %f", yoel.x);
DLog(@"yoel is %f", yoel.y);
перед запуском на устройстве я изменил его на
DLog(@"yoel is %d", yoel.x);
DLog(@"yoel is %d", yoel.y);
поскольку CGPoint находится в float, я получил 0 вместо правильной координаты...
Еще один урок - я никогда не изменю код до того, как переключу тест с симулятора на устройство, чтобы не обвинять Apple, но сам:)
Ответ 2
У меня была другая проблема, связанная с этим вопросом, и заметила, что мне пришлось рассмотреть масштаб экрана при преобразовании прямоугольника. (то есть он работал на симуляторе не потому, что он был симулятором, а потому, что симулятор находился в режиме без сетчатки)
// the following convertRect is like asking a view: "what would one of your subviews (aView) have for a frame in my (toView) coordinate space if it were to become my subview?
_originalFrame = [[aView superview] convertRect: aView.frame toView: self];
CGFloat scale = [[UIScreen mainScreen] scale];
_originalFrame.origin.x /= scale;
_originalFrame.origin.y /= scale;
_originalFrame.size.width /= scale;
_originalFrame.size.height /= scale;
NSLog(@"Converted Frame: %@", NSStringFromCGRect(_originalFrame));