iPhone - захват содержания основного экрана

У меня есть определенная функция на приложении, которое предназначается для работы над iPhone 4 и iPad. У меня еще нет iPad (потому что Apple забыла мою страну), таким образом, я должен протестировать его на средстве моделирования.

У меня есть метод, который должен захватить содержание основного экрана как CGImageRef.

У меня есть этот метод:

- (CGImageRef)takeScreenshot {
    UIWindow *theScreen = [[UIApplication sharedApplication].windows objectAtIndex:0];
    UIGraphicsBeginImageContext(theScreen.frame.size);
    [[theScreen layer] renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return screenshot.CGImage;
}

Когда я компилирую и тестирую версию iPhone своего приложения для iPhone, это работает отлично. Но когда я компилирую и тестирую версию iPad на средстве моделирования iPad, она возвращает черный экран.

Чтобы это работало, я должен изменить "objectAtIndex:0" на "objectAtIndex:1" на второй строке.

Есть ли какая-либо логика для этого, или это - просто ошибка средства моделирования? Насколько я знаю, индекс 0 всегда является основным экраном.

Там какой-либо другой путь состоит в том, чтобы получить основное экранное содержание от другого класса?

заранее спасибо.

1
задан SpaceDog 14 August 2010 в 10:46
поделиться

1 ответ

Может быть, использовать keyWindow, чтобы получить нужное окно напрямую?

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

По поводу проблемы со страной - подумайте о заказе из другой страны. ;-)

2
ответ дан 2 September 2019 в 22:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: