У меня есть определенная функция на приложении, которое предназначается для работы над 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 всегда является основным экраном.
Там какой-либо другой путь состоит в том, чтобы получить основное экранное содержание от другого класса?
заранее спасибо.
Может быть, использовать keyWindow
, чтобы получить нужное окно напрямую?
UIWindow *theScreen = [[UIApplication sharedApplication] keyWindow];
По поводу проблемы со страной - подумайте о заказе из другой страны. ;-)