簡體   English   中英

在iOs中使用UIView和背景進行屏幕截圖

[英]Screen capture with UIView and background in iOs

在我的iPhone應用程序中,我正在捕獲設備的屏幕截圖。 在屏幕截圖視圖中,我具有不同的層次結構視圖,在底部為空白背景視圖,然后在背景圖像視圖上方,在圖像視圖上方為EAGLView。 我想用EAGLView的幀大小捕獲設備的屏幕快照,並且它應該包括imageview和background視圖。 這是我的代碼:

- (IBAction)captureScreen:(id)sender{

    UIGraphicsBeginImageContext(self.view.bounds.size);

    [self.cameraAppView.layer renderInContext:UIGraphicsGetCurrentContext()]; // cameraAppView is the EAGLView

    UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    CGImageRef imageRef = CGImageCreateWithImageInRect([viewImage CGImage], cameraAppView.frame);

    UIImage *img = [UIImage imageWithCGImage:imageRef];

    CGImageRelease(imageRef);
}

但是現在我只得到EAGLView的屏幕截圖,我想通過EAGLView框架尺寸來獲取設備的屏幕截圖。 我怎樣才能做到這一點?

編輯

抱歉,我沒有回答我的問題。 同一屏幕上還存在其他一些子視圖。 但是所有這些都是EAGLView的頂部。 我想在包含EAGLView內容的EAGLView下捕獲視圖的圖像。

最后我自己找到了答案。 這是一個棘手的問題,我不確定是否還有其他適當的方法可以做到這一點。 對於我的需求,它運行良好。 我所做的是,僅隱藏子視圖(不應包含在屏幕截圖圖像中),並在捕獲圖像后取消隱藏子視圖。

如果有人找到合適的方法,請分享。

指定您要捕獲的視圖,而不是

[self.cameraAppView.layer renderInContext:UIGraphicsGetCurrentContext()];

采用

[self.cameraAppView.superView.superView.layer renderInContext:UIGraphicsGetCurrentContext()];

如果您的EAGLView是imageView的子視圖,而該子視圖是您要捕獲的視圖的子視圖,則此方法有效

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM