convertPoint: fromView: хорошо работает на симуляторе, а не на устройстве - PullRequest
0 голосов
/ 16 мая 2011

Я был рад видеть это: ответ о том, как преобразовать точку подпредставления , и он отлично работал для меня на симуляторе.

Но по некоторым причинам это не работаетна устройстве ... Может ли устройство по-разному управлять позициями просмотра или это просто еще одна загадка?Или (надеюсь) я написал это неправильно, и вы, ребята, можете помочь ... :)

вот моя строка:

CGPoint yoel = [imagePressed.imageView convertPoint:imagePressed.frame.origin toView:nil];

Ответы [ 2 ]

8 голосов
/ 13 июня 2012

У меня была другая проблема, связанная с этим вопросом, и я заметил, что мне пришлось учитывать масштаб экрана при преобразовании прямоугольника.(т.е. он работал на симуляторе не потому, что это симулятор, а потому, что симулятор был в режиме без сетчатки)

// 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));
2 голосов
/ 16 мая 2011

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 находится в плавающем состоянии, я получил 0 вместо правильной координаты ...

Еще один извлеченный урок - я никогда не буду менять код, прежде чем переключать тест с симулятора на устройство, чтобы не обвинять яблоко, а себя:)

...