আমি কীভাবে কোনও ইউআইভিউর স্ক্রিন শট নেব?


133

আমি ভাবছি যে কীভাবে আমার আইফোন অ্যাপ্লিকেশনটি নির্দিষ্ট UIViewহিসাবে একটি নির্দিষ্ট স্ক্রিন শট নিতে পারে UIImage

আমি এই কোডটি চেষ্টা করেছিলাম তবে যা পেয়েছি তা একটি ফাঁকা চিত্র।

UIGraphicsBeginImageContext(CGSizeMake(320,480));
CGContextRef context = UIGraphicsGetCurrentContext();
[myUIView.layer drawInContext:context];
UIImage *screenShot = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

myUIViewএর 320x480 মাত্রা রয়েছে এবং এর কিছু উপ-ভিউ রয়েছে। এটি করার সঠিক উপায় কী?


উত্তর:


73

আমি মনে করি আপনি চাইবেন renderInContext, নাও পারেন drawInContext। অঙ্কনকন্টেক্সট হ'ল এমন একটি পদ্ধতি যা আপনি ওভাররাইড করবেন ...

মনে রাখবেন যে এটি সমস্ত দর্শনে কাজ নাও করতে পারে, বিশেষত এক বছর বা তারও অনেক আগে যখন আমি লাইভ ক্যামেরা ভিউটি ব্যবহার করে এটি কাজ করে নি তখন এটি ব্যবহার করে না।


হাই কেন্ডল আপনার কাছে কোনও ইউআইভিউয়ের সামগ্রীগুলি স্থির চিত্র হিসাবে নয়, তবে ভিডিও হিসাবে ক্যাপচার করার জন্য পরামর্শ আছে? আপনার সময় জন্য ধন্যবাদ! : এখানে প্রশ্ন stackoverflow.com/questions/34956713/...
Crashalot

187

আইওএস 7 এর একটি নতুন পদ্ধতি রয়েছে যা আপনাকে বর্তমান গ্রাফিক্স প্রসঙ্গে একটি ভিউ হায়ারার্কি আঁকার অনুমতি দেয়। এটি খুব দ্রুত একটি ইউআইআইমেজ পেতে ব্যবহার করা যেতে পারে।

আমি UIViewএই হিসাবে ভিউ পেতে একটি বিভাগ পদ্ধতি প্রয়োগ করেছি UIImage:

- (UIImage *)pb_takeSnapshot {
    UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, [UIScreen mainScreen].scale);

    [self drawViewHierarchyInRect:self.bounds afterScreenUpdates:YES];

    // old style [self.layer renderInContext:UIGraphicsGetCurrentContext()];

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return image;
}

এটি বিদ্যমান renderInContext:পদ্ধতির পরে যথেষ্ট দ্রুত ।

তথ্যসূত্র: https://developer.apple.com/library/content/qa/qa1817/_index.html

সুইফটের জন্য আপডেট করুন : একটি এক্সটেনশন যা একই কাজ করে:

extension UIView {

    func pb_takeSnapshot() -> UIImage {
        UIGraphicsBeginImageContextWithOptions(bounds.size, false, UIScreen.mainScreen().scale)

        drawViewHierarchyInRect(self.bounds, afterScreenUpdates: true)

        // old style: layer.renderInContext(UIGraphicsGetCurrentContext())

        let image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return image
    }
}

সুইফট 3 এর জন্য আপডেট করুন

    UIGraphicsBeginImageContextWithOptions(bounds.size, false, UIScreen.main.scale)

    drawHierarchy(in: self.bounds, afterScreenUpdates: true)

    let image = UIGraphicsGetImageFromCurrentImageContext()!
    UIGraphicsEndImageContext()
    return image

আপনার কাছে যদি বড় ইউআইবাবেল বা ক্যাশপেয়ার থাকে তবে এটি কাজ করে না, এটি কোনও কিছু আঁকতে শেষ করে না
jjxtra

আপনার সুইফট স্নিপেটকে ধন্যবাদ আমি আমার সমস্যার সমাধান করেছি: stackoverflow.com/a/27764590/1139044
নিকোলাস

এটি আমার সমস্যার সমাধান করেছে। আমি পুরানো সংস্করণটি ব্যবহার করছিলাম এবং এটি আমাকে ত্রুটিগুলি প্রচুর পরিমাণে দিচ্ছিল! এক মিলিয়ন ধন্যবাদ
apinho

আমি দৃশ্যের স্ক্রিন শট নিতে একইভাবে ব্যবহার করছি। যদি কোনও দৃশ্যের সাবউভিউ হিসাবে wkwebview থাকে তবে এটি স্ক্রিন শট নিতে সক্ষম হয় না। এটি ফাঁকা দেখায়। স্ক্রিন শট কীভাবে নেওয়া যায়?
রিকেশ সুবেদী

1
দেখার জন্য নিয়ন্ত্রণকারীদের পরিবর্তনের সময় এই কল করা রূপান্তরের শেষে ঝলক দেয়।
Iulian Onofrei

63

স্ক্রিনশট বা ইউআইভিউয়ের জন্য আপনাকে কী উইন্ডোটি ক্যাপচার করতে হবে । আপনি এটি রেটিনা রেজোলিউশনে ইউআইজিগ্রাফিকসবেগিনআইমেজকনটেক্সট উইথঅপশন ব্যবহার করে করতে পারেন এবং এর স্কেল প্যারামিটার 0.0f সেট করতে পারেন । এটি সর্বদা দেশীয় রেজোলিউশনে (আইফোন 4 এবং তারপরে রেটিনা) ক্যাপচার করে।

এটি একটি পুরো স্ক্রিনশট করে (কী উইন্ডো)

UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow];
CGRect rect = [keyWindow bounds];
UIGraphicsBeginImageContextWithOptions(rect.size,YES,0.0f);
CGContextRef context = UIGraphicsGetCurrentContext();
[keyWindow.layer renderInContext:context];   
UIImage *capturedScreen = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

এই কোডটি স্থানীয় রেজোলিউশনে একটি ইউআইভিউ ক্যাপচার করে

CGRect rect = [captureView bounds];
UIGraphicsBeginImageContextWithOptions(rect.size,YES,0.0f);
CGContextRef context = UIGraphicsGetCurrentContext();
[captureView.layer renderInContext:context];   
UIImage *capturedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

এটি অ্যাপ্লিকেশনটির ডকুমেন্ট ফোল্ডারে 95% মানের সহ জেপিজি ফর্ম্যাটে ইউআইআইমেজ সংরক্ষণ করে you

NSString  *imagePath = [NSHomeDirectory() stringByAppendingPathComponent:[NSString stringWithFormat:@"Documents/capturedImage.jpg"]];    
[UIImageJPEGRepresentation(capturedImage, 0.95) writeToFile:imagePath atomically:YES];

পূর্ণ পর্দার স্ক্রিনশটটি দুঃখের সাথে স্ট্যাটাসবারটি ক্যাপচার করে না। যদিও খুব সুন্দর স্নিপেট।
নিউনি

কিবোর্ড ক্যাপচার করার কোনও উপায় আছে?
mrvincenzo

@ বিবিডাবো ধন্যবাদ এটি কাজ করে। তবে আমি কীভাবে একের বেশি চিত্র সংরক্ষণ করতে পারি?
জোসেফ

"চেসাপিকে গ্রেট মেমোরি ফুটো!" - হার্মিস কনরাড (গুরুতরভাবে যদিও, আপনার সিজি সঠিকভাবে পরিচালনা করুন !!)
অ্যালবার্ট রেনশওয়া

22

iOS7 এর পরে, আমাদের ডিফল্ট পদ্ধতিগুলির নীচে রয়েছে:

- (UIView *)snapshotViewAfterScreenUpdates:(BOOL)afterUpdates

উপরের পদ্ধতিতে কল করা নিজেকে বর্তমান বিটের বিষয়বস্তুগুলি একটি বিটম্যাপ ইমেজে রেন্ডার করার চেষ্টা করার চেয়ে দ্রুত।

যদি আপনি কোনও স্ন্যাপশটে কোনও ঝাপসা রঙের মতো কোনও গ্রাফিক্যাল এফেক্ট প্রয়োগ করতে চান তবে drawViewHierarchyInRect:afterScreenUpdates:পরিবর্তে পদ্ধতিটি ব্যবহার করুন।

https://developer.apple.com/library/ios/documentation/uikit/reference/uiview_class/uiview/uiview.html


13

আইওএস 10 থেকে নতুন এপিআই রয়েছে

extension UIView {
    func makeScreenshot() -> UIImage {
        let renderer = UIGraphicsImageRenderer(bounds: self.bounds)
        return renderer.image { (context) in
            self.layer.render(in: context.cgContext)
        }
    }
}

10

সুইউটে স্ক্রিনশট নেওয়ার জন্য আমি ইউআইভিউয়ের ব্যবহারযোগ্য এক্সটেনশন তৈরি করেছি:

extension UIView{

var screenshot: UIImage{

    UIGraphicsBeginImageContext(self.bounds.size);
    let context = UIGraphicsGetCurrentContext();
    self.layer.renderInContext(context)
    let screenShot = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return screenShot
}
}

এটি ব্যবহার করতে কেবল টাইপ করুন:

let screenshot = view.screenshot

1
ব্যবহার করুন UIGraphicsBeginImageContextWithOptions(self.bounds.size, false, 0);বদলে UIGraphicsBeginImageContext(self.bounds.size);ডিভাইসের অধিকার স্কেল ফ্যাক্টর ব্যবহার করতে।
knshn

1
আমি নিশ্চিত এটি কার্যকরভাবে কাজ করে, তবে এর drawViewHierarchyInRectপরিবর্তে ব্যবহার renderInContext হয় না।
মাইক ডেমিডভ

7
- (void)drawRect:(CGRect)rect {
  UIGraphicsBeginImageContext(self.bounds.size);    
  [self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
  UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
  UIGraphicsEndImageContext();
  UIImageWriteToSavedPhotosAlbum(viewImage, nil, nil, nil);  
}

এই পদ্ধতিটি আপনার নিয়ামক শ্রেণিতে ফেলতে পারে।


2
drawRectহয় না UIViewController (IIRC) অংশ। এটি একটি ইউআইভিউয়ের অংশ। আমি বিশ্বাস করি না এটি যদি বলা হয় এটি নিয়ন্ত্রণকারীর মধ্যে থাকলে।
jwww

আমি কীভাবে সংরক্ষিত চিত্রের পথ পেতে পারি?
গেমদেবগুরু

5
CGImageRef UIGetScreenImage();

অ্যাপল এটি এখন একটি ব্যক্তিগত এপিআই হওয়া সত্ত্বেও, আমাদের এটিকে সর্বজনীন অ্যাপ্লিকেশনে ব্যবহার করার অনুমতি দেয়


আমার ইউআইউভিউয়ের শীর্ষে অন্যান্য ইউআইভিউ রয়েছে যা আমি ক্যাপচার করতে চাই না। অন্যথায়, এই দুর্দান্ত হবে।
cduck

5

বিস্তারিত

  • এক্সকোড সংস্করণ 10.3 (10 জি 8), সুইফ্ট 5

সমাধান

import UIKit

extension CALayer {
    func makeSnapshot() -> UIImage? {
        let scale = UIScreen.main.scale
        UIGraphicsBeginImageContextWithOptions(frame.size, false, scale)
        defer { UIGraphicsEndImageContext() }
        guard let context = UIGraphicsGetCurrentContext() else { return nil }
        render(in: context)
        let screenshot = UIGraphicsGetImageFromCurrentImageContext()
        return screenshot
    }
}

extension UIView {
    func makeSnapshot() -> UIImage? {
        if #available(iOS 10.0, *) {
            let renderer = UIGraphicsImageRenderer(size: frame.size)
            return renderer.image { _ in drawHierarchy(in: bounds, afterScreenUpdates: true) }
        } else {
            return layer.makeSnapshot()
        }
    }
}

ব্যবহার

let image = view.makeSnapshot()

সম্পূর্ণ নমুনা

সমাধান কোডটি এখানে যুক্ত করতে ভুলবেন না

import UIKit

class ViewController: UIViewController {

    @IBOutlet var viewForScreenShot: UIView!
    @IBOutlet var screenShotRenderer: UIImageView!

    @IBAction func makeViewScreenShotButtonTapped2(_ sender: UIButton) {
        screenShotRenderer.image = viewForScreenShot.makeSnapshot()
    }
}

Main.storyboard

<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="11762" systemVersion="16C67" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="BYZ-38-t0r">
    <device id="retina4_7" orientation="portrait">
        <adaptation id="fullscreen"/>
    </device>
    <dependencies>
        <deployment identifier="iOS"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11757"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    </dependencies>
    <scenes>
        <!--View Controller-->
        <scene sceneID="tne-QT-ifu">
            <objects>
                <viewController id="BYZ-38-t0r" customClass="ViewController" customModule="stackoverflow_2214957" customModuleProvider="target" sceneMemberID="viewController">
                    <layoutGuides>
                        <viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
                        <viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
                    </layoutGuides>
                    <view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                        <subviews>
                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Acg-GO-mMN">
                                <rect key="frame" x="67" y="28" width="240" height="128"/>
                                <subviews>
                                    <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="4Fr-O3-56t">
                                        <rect key="frame" x="72" y="49" width="96" height="30"/>
                                        <constraints>
                                            <constraint firstAttribute="height" constant="30" id="cLv-es-h7Q"/>
                                            <constraint firstAttribute="width" constant="96" id="ytF-FH-gdm"/>
                                        </constraints>
                                        <nil key="textColor"/>
                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                        <textInputTraits key="textInputTraits"/>
                                    </textField>
                                </subviews>
                                <color key="backgroundColor" red="0.0" green="0.47843137250000001" blue="1" alpha="0.49277611300000002" colorSpace="custom" customColorSpace="sRGB"/>
                                <color key="tintColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
                                <constraints>
                                    <constraint firstItem="4Fr-O3-56t" firstAttribute="centerX" secondItem="Acg-GO-mMN" secondAttribute="centerX" id="egj-rT-Gz5"/>
                                    <constraint firstItem="4Fr-O3-56t" firstAttribute="centerY" secondItem="Acg-GO-mMN" secondAttribute="centerY" id="ymi-Ll-WIV"/>
                                </constraints>
                            </view>
                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="SQq-IE-pvj">
                                <rect key="frame" x="109" y="214" width="157" height="30"/>
                                <state key="normal" title="make view screen shot"/>
                                <connections>
                                    <action selector="makeViewScreenShotButtonTapped2:" destination="BYZ-38-t0r" eventType="touchUpInside" id="KSY-ec-uvA"/>
                                </connections>
                            </button>
                            <imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="CEZ-Ju-Tpq">
                                <rect key="frame" x="67" y="269" width="240" height="128"/>
                                <constraints>
                                    <constraint firstAttribute="width" constant="240" id="STo-iJ-rM4"/>
                                    <constraint firstAttribute="height" constant="128" id="tfi-zF-zdn"/>
                                </constraints>
                            </imageView>
                        </subviews>
                        <color key="backgroundColor" red="0.95941069162436543" green="0.95941069162436543" blue="0.95941069162436543" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                        <constraints>
                            <constraint firstItem="CEZ-Ju-Tpq" firstAttribute="top" secondItem="SQq-IE-pvj" secondAttribute="bottom" constant="25" id="6x1-iB-gKF"/>
                            <constraint firstItem="Acg-GO-mMN" firstAttribute="leading" secondItem="CEZ-Ju-Tpq" secondAttribute="leading" id="LUp-Be-FiC"/>
                            <constraint firstItem="SQq-IE-pvj" firstAttribute="top" secondItem="Acg-GO-mMN" secondAttribute="bottom" constant="58" id="Qu0-YT-k9O"/>
                            <constraint firstItem="Acg-GO-mMN" firstAttribute="centerX" secondItem="8bC-Xf-vdC" secondAttribute="centerX" id="Qze-zd-ajY"/>
                            <constraint firstItem="Acg-GO-mMN" firstAttribute="trailing" secondItem="CEZ-Ju-Tpq" secondAttribute="trailing" id="b1d-sp-GHD"/>
                            <constraint firstItem="SQq-IE-pvj" firstAttribute="centerX" secondItem="CEZ-Ju-Tpq" secondAttribute="centerX" id="qCL-AF-Cro"/>
                            <constraint firstItem="Acg-GO-mMN" firstAttribute="top" secondItem="y3c-jy-aDJ" secondAttribute="bottom" constant="8" symbolic="YES" id="u5Y-eh-oSG"/>
                            <constraint firstItem="CEZ-Ju-Tpq" firstAttribute="centerY" secondItem="8bC-Xf-vdC" secondAttribute="centerY" id="vkx-JQ-pOF"/>
                        </constraints>
                    </view>
                    <connections>
                        <outlet property="screenShotRenderer" destination="CEZ-Ju-Tpq" id="8QB-OE-ib6"/>
                        <outlet property="viewForScreenShot" destination="Acg-GO-mMN" id="jgL-yn-8kk"/>
                    </connections>
                </viewController>
                <placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
            </objects>
            <point key="canvasLocation" x="32.799999999999997" y="37.331334332833585"/>
        </scene>
    </scenes>
</document>

ফলাফল

এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন


এটি একটি বিস্তৃত উদাহরণ। তার জন্য আপনাকে অনেক ধন্যবাদ!
কেএমসি

4

অ্যাপল অনুমতি দেয় না:

CGImageRef UIGetScreenImage();

অ্যাপ্লিকেশন ব্যবহার করে একটি স্ক্রিনশট নিতে হবে drawRect: উল্লেখিত পদ্ধতি http://developer.apple.com/library/ios/#qa/qa2010/qa1703.html


2
সুতরাং, ম্যাট এস এর উত্তর সম্পর্কে কি?
গজেন্দ্র কে চৌহান

4

আমি ইউআইভিউ থেকে একটি স্ক্রিন শট সংরক্ষণের জন্য এই এক্সটেনশনটি তৈরি করেছি

extension UIView {
func saveImageFromView(path path:String) {
    UIGraphicsBeginImageContextWithOptions(bounds.size, false, UIScreen.mainScreen().scale)
    drawViewHierarchyInRect(bounds, afterScreenUpdates: true)
    let image = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    UIImageJPEGRepresentation(image, 0.4)?.writeToFile(path, atomically: true)

}}

কল :

let pathDocuments = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true).first!
let pathImage = "\(pathDocuments)/\(user!.usuarioID.integerValue).jpg"
reportView.saveImageFromView(path: pathImage)

আপনি যদি পিএনজি তৈরি করতে চান তবে অবশ্যই এটি পরিবর্তন করতে হবে:

UIImageJPEGRepresentation(image, 0.4)?.writeToFile(path, atomically: true)

দ্বারা

UIImagePNGRepresentation(image)?.writeToFile(path, atomically: true)

কোনও ধারণাগুলি কেন আমি যদি কোনও ইউআইটিএবলভিউসেল স্ক্রিনশট করি তবে আমি খালি ভিউ পাই, তবে আমি যদি টেবিলভিউটির স্ক্রিনশট করি তবে আমি কী প্রত্যাশা করব?
আনোম করুন

আমি একটি উদাহরণ দিয়ে চেষ্টা করেছি (UItableViewController) এবং এটি কাজ করে, সম্ভবত আপনার কোডটি এখানে পর্যালোচনার জন্য
রেখেছি

কৌশলটি হ'ল আমার একটি সিজি কনটেক্সট ট্রান্সলেট সিটিএম (প্রসঙ্গ, 0, -ভিউ.ফ্রেম.রিগিন.ই) ব্যবহার করা প্রয়োজন;
খুলুন

3

সুইফট 4 আপডেট হয়েছে:

extension UIView {
   var screenShot: UIImage?  {
        if #available(iOS 10, *) {
            let renderer = UIGraphicsImageRenderer(bounds: self.bounds)
            return renderer.image { (context) in
                self.layer.render(in: context.cgContext)
            }
        } else {
            UIGraphicsBeginImageContextWithOptions(bounds.size, false, 5);
            if let _ = UIGraphicsGetCurrentContext() {
                drawHierarchy(in: bounds, afterScreenUpdates: true)
                let screenshot = UIGraphicsGetImageFromCurrentImageContext()
                UIGraphicsEndImageContext()
                return screenshot
            }
            return nil
        }
    }
}

এই স্ক্রিনশট পদ্ধতিটি দুর্দান্ত কাজ করেছে।
একনিস্ট

2

স্ক্রিনশট নিতে নিম্নলিখিত স্নিপেট ব্যবহার করা হয়:

UIGraphicsBeginImageContext(self.muUIView.bounds.size);

[myUIView.layer renderInContext:UIGraphicsGetCurrentContext()];

UIImage *screenShot = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

ব্যবহারের renderInContext:পরিবর্তে পদ্ধতি drawInContext:পদ্ধতি

renderInContext:পদ্ধতিটি রিসিভার এবং এর সাবলেয়ারগুলিকে বর্তমান প্রসঙ্গে উপস্থাপন করে। এই পদ্ধতিটি সরাসরি স্তর গাছ থেকে উপস্থাপন করে।


1
-(UIImage *)convertViewToImage
{
    UIGraphicsBeginImageContext(self.bounds.size);
    [self drawViewHierarchyInRect:self.bounds afterScreenUpdates:YES];
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

  return image;
}

0

আপনি নিম্নলিখিত ইউআইভিউ বিভাগটি ব্যবহার করতে পারেন -

@implementation UIView (SnapShot)

 - (UIImage *)snapshotImage
{
    UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, [UIScreen mainScreen].scale);        
    [self drawViewHierarchyInRect:self.bounds afterScreenUpdates:NO];        
    // old style [self.layer renderInContext:UIGraphicsGetCurrentContext()];        
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();        
    UIGraphicsEndImageContext();        
    return image;
}    
@end
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.