20
我有一個視圖(testView)是400x320,我需要截取此視圖的一部分(比如rect =(50,50,200,200))。 我正在玩iOS 7中的drawViewHierarchy方法,但我無法弄清楚如何正確地做到這一點。iOS 7截取部分UIView的屏幕截圖
UIGraphicsBeginImageContextWithOptions(self.testView.bounds.size, NO, [UIScreen mainScreen].scale);
[self.testView drawViewHierarchyInRect:self.testView.bounds afterScreenUpdates:YES];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
任何幫助將不勝感激!
謝謝。
謝謝!這幫了我很多! – Max
在Swift中使用'self.hostView.superview!.drawHierarchy(in:frame,afterScreenUpdates:true)'其中'frame'肯定小於'superView',我仍然可以看到完整視圖的內容。但它壓縮到我提供給'UIGraphicsBeginImageContextWithOptions()'(我當然與我的'frame'的'size'相同)的'CGSize'。 –
@意義 - 這裏的技巧是通過使用與您的視圖完全相同的大小(以防止縮放)來繪製層次結構,並抵消它以獲得所需的部分。通過使用'UIGraphicsBeginImageContextWithOptions(CGSize(width:200,height:200),true,0)',你可以用view.drawHierarchy(in:view.bounds,afterScreenUpdates:true)得到視圖的左上角200x200部分' 。你也可以通過這種方式來抵消零件:'view.drawHierarchy(in:UIEdgeInsetsInsetRect(view.bounds,UIEdgeInsets(top:-100,left:-100,bottom:0,right:0)),afterScreenUpdates:true) '。希望能幫助到你! – Rufel