convertPoint: fromView: хорошо работает на симуляторе, а не на устройстве

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

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

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

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

person Lior Frenkel    schedule 16.05.2011    source источник


Ответы (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));
person horseshoe7    schedule 13.06.2012
comment
Я также заметил это, с CGPoint вместо CGRect, и ваш ответ был правильным исправлением. Но мне интересно, почему так происходит, может что-то не так в нашем подходе? - person mokagio; 01.11.2012

В ПОРЯДКЕ. это был урок разницы между% 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 вместо правильной координаты ...

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

person Lior Frenkel    schedule 16.05.2011