Вам понадобится внешний вид, так как 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
}
Я ответ, то я сделал немного больше исследований и обнаружил, ваш вопрос уже задавался и ответил [в этом дубликате вопроса] (HTTP : //stackoverflow.com/a/10598284/) –
Я пробовал все, что нашел ... Но он никогда не захватывает элементы управления поверх «UIImageViewA», как я могу это сделать без добавления B в качестве подзаголовка? – dan
B и A являются детьми self.view .... – dan