Ключевые позиции окна - "вдвое большая" причудливая проблема

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

-(void)takeover:(UIView*)peel
    {
    // transfer "ownership" of a view from wherever it is now, to self.
    // keep the position correct.

    CGPoint centerInWC = [peel.superview convertPoint:peel.center toView:nil];
    [self addSubview:peel];
    CGPoint centerInMyViewCoords = [self convertPoint:centerInWC fromView:nil];
    peel.center = centerInMyViewCoords;
    }

(Примечание из документации для toView: и fromView:... "If view is nil, this method instead converts to window base coordinates.")

Вот вывод..

2014-07-07 19:59:04.273  before .... actual position ... {87, 107}
2014-07-07 19:59:04.278  centerInWC is ... {87, 107}
2014-07-07 19:59:04.278  centerInMyViewCoords is ... {87, 107}

Нет проблем. Все фантастически.

Как насчет использования главного окна, так что keyWindow??

Теперь, вы ДУМАЕТЕ, что следующее также будет работать:

-(void)takeover:(UIView*)peel
    {
    //let's try using "main window" coords...

    UIWindow *mainWindow = [[UIApplication sharedApplication] keyWindow];

    CGPoint cWC = [mainWindow convertPoint:peel.center fromView:peel.superview];
    [self addSubview:peel];
    CGPoint c = [self convertPoint:cWC fromView:mainWindow];
    peel.center = c;
    }

На самом деле это не работает!

Каждый раз вы получаете значения, которые составляют половину фактических, правильных значений.

Вот вывод...

2014-07-07 19:59:04.273  before .... actual position ... {87, 107}
2014-07-07 19:59:04.278  cWC is ... {43.5, 53.5}
2014-07-07 19:59:04.278  c is ... {43.5, 53.5}

Кто-нибудь знает объяснение? Приветствия...

0 ответов

Другие вопросы по тегам