ios - স্ক্রিনশট ফাঁকা দেখাচ্ছে-সুইফট




swift uiview (2)

হাই আমি একটি গেম তৈরি করছি এবং আমি গেমটিতে একটি শেয়ার বোতাম যুক্ত করেছি। আমি চাই যে ব্যবহারকারী কোনও বার্তায় একটি বার্তা, ইউআরএল এবং স্ক্রিনশট একে অপরের পাশে ভাগ করে নিতে সক্ষম হন it এর ভাগ করার দিকটি ঠিকঠাক কাজ করছে এবং স্ক্রিনশটটি খালি দেখানো ব্যতীত সবকিছু প্রদর্শিত হচ্ছে। স্ক্রিনশট নিতে আমি এই কোডটি ব্যবহার করছি:

   let layer = UIApplication.sharedApplication().keyWindow!.layer
    let scale = UIScreen.mainScreen().scale
    UIGraphicsBeginImageContextWithOptions(layer.frame.size, false, scale);

    layer.renderInContext(UIGraphicsGetCurrentContext())
    let screenshot = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()

    UIImageWriteToSavedPhotosAlbum(screenshot, nil, nil, nil)

    println("screenshot")

দয়া করে আমাকে এই সমস্যাটি সমাধান করতে সহায়তা করুন এবং দয়া করে সুইফট ভাষায় এটি করতে ভুলবেন না। এছাড়াও আমি স্প্রিটকিট প্রযুক্তি ব্যবহার করছি যদি এতে কোনও পার্থক্য আসে। আমি কোডিংয়ে নতুন তাই দয়া করে খুব স্পষ্ট হয়ে উঠুন। আপনাকে অনেক ধন্যবাদ!


আপডেট: এক্সকোড 8.2.1 • সুইফ্ট 3.0.2

আপনার গেমের দৃশ্যে আপনাকে আমদানি বিবৃতি এবং এই এক্সটেনশনটি যুক্ত করতে হবে:

import UIKit 
extension UIView {
    var snapshot: UIImage? {
        UIGraphicsBeginImageContextWithOptions(bounds.size, false, 0)
        defer { UIGraphicsEndImageContext() }
        drawHierarchy(in: bounds, afterScreenUpdates: true)
        return UIGraphicsGetImageFromCurrentImageContext()
    }
}
let myImage = view?.snapshot

ডাব্লুডাব্লুডিসি 2015, ইউআইভিউজুয়ালএফেক্টভিউতে নতুন কী, একটি স্পন্দন লেবেল এবং অস্পষ্ট একটি ইউআইভিউজুয়ালএফেক্টভিউয়ের স্ক্রিনশট ক্যাপচার করার জন্য একটি সমাধান "গ্লোসড ওভার" করা হয়েছে। যে সমস্যাটি প্রায়শই দেখা দেয় তা হ'ল অ্যাপলের স্ক্রিনশট এপিআই ইউআইভিজুয়ালএফেক্ট ক্যাপচার না করে, ফলে ভিজ্যুয়াল এফেক্ট ব্যতীত দৃশ্যের স্ক্রিনশট তৈরি হয়। ডাব্লুডাব্লুডিসি 2015 এর সমাধান অনুসারে উইন্ডো / স্ক্রিনে স্ন্যাপশট ক্যাপচারের সাথে জড়িত; দুর্ভাগ্যক্রমে, নমুনা কোডটি দেখানো হয়নি। নিম্নলিখিতটি আমার নিজস্ব বাস্তবায়ন:

//create snapshot of the blurView
let window = UIApplication.sharedApplication().delegate!.window!!
//capture the entire window into an image
UIGraphicsBeginImageContextWithOptions(window.bounds.size, false, UIScreen.mainScreen().scale)
window.drawViewHierarchyInRect(window.bounds, afterScreenUpdates: true)
let windowImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
//now position the image x/y away from the top-left corner to get the portion we want
UIGraphicsBeginImageContext(blurView.frame.size)
windowImage.drawAtPoint(CGPoint(x: -blurView.frame.origin.x, y: -blurView.frame.origin.y))
let croppedImage: UIImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext();
//embed image in an imageView, supports transforms.
let resultImageView = UIImageView(image: croppedImage)

দ্রষ্টব্য: এই স্ন্যাপশট কোডটি কেবলমাত্র ভিডিডআইপিএয়ার কল করার পরে কাজ করবে।