2013-03-29 3 views
0

Как сделать снимок экрана приложения iPad/iPhone и ограничить его границами «UIImageView A», но также иметь скриншот, который включает любые элементы управления (UIImageView или UILabels), которые располагаются поверх «UIImageView A»? Будет ли беспорядок, когда стандартный дисплей против сетчатки отображается?iOS SDK - частичный снимок экрана?

СПАСИБО В РАМКАХ!

example

+0

Я ответ, то я сделал немного больше исследований и обнаружил, ваш вопрос уже задавался и ответил [в этом дубликате вопроса] (HTTP : //stackoverflow.com/a/10598284/) –

+0

Я пробовал все, что нашел ... Но он никогда не захватывает элементы управления поверх «UIImageViewA», как я могу это сделать без добавления B в качестве подзаголовка? – dan

+0

B и A являются детьми self.view .... – dan

ответ

0

Вам понадобится внешний вид, так как UIImageView не предназначен для просмотра подпункта. Поместите все, что вы хотите захватить внутри этого закрывающего представления (простой UIView будет делать). Ниже очень простая реализация, которая игнорирует такие вещи, как просмотреть преобразование:

// Helper function, calls drawRect: recursively 
void drawViewAndSubviews (UIView* view) { 
    [view drawRect:view.bounds]; 
    CGContextRef ctx = UIGraphicsGetCurrentContext(); 
    for (UIView* subview in view.subviews) { 
    CGPoint origin = subview.frame.origin; 
    CGContextTranslateCTM(ctx, origin.x, origin.y); 
    drawViewAndSubviews(subview); 
    CGContextTranslateCTM(ctx, -origin.x, -origin.y); 
    } 
} 

- (void)takeScreenshot:(UIView *)view { 
    UIGraphicsBeginImageContext(view.bounds.size); 
    drawViewAndSubviews(view); 
    UIImage* image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    // Now 'image' has a snapshot of 'view' and its subviews 
} 
+0

wow это очень помогло .. Любая идея, почему изображение будет монохромным? – dan

+0

Не знаю. Я написал тестовое приложение, чтобы попробовать этот код, прежде чем опубликовать его, и это сработало для меня. Какой вид класса вы используете в методе takeScreenshot:? – Tony

+0

Я использую self.view? – dan

2

Другой идеей было бы просто взять скриншот старинке, например, see the answer in this related question, а затем обведите его в прямоугольник прямоугольника вашего «A» UIView.

Смежные вопросы