Swift転職なら=>【LevTech】
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大

頭痛が減ったので共有です!

rebuild.fmを応援しています!

HOME > スクリーンキャプチャ取得

スクリーンキャプチャ取得

端末に表示されているスクリーンキャプチャを取得します。
参考:How to take Full screen Screenshot in swift?

サンプル構文


//キャプチャ取得.変数screenshotにUIImageが保存されます
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);

ScreenCaptureUtil例文

ScreenCaptureUtil.swiftをダウンロードする。(ご自由にご利用ください)

import UIKit

struct ScreenCaptureUtil {
    static func take()->UIImage{
        
        let layer = UIApplication.sharedApplication().keyWindow.layer
        let scale = UIScreen.mainScreen().scale
        UIGraphicsBeginImageContextWithOptions(layer.frame.size, false, scale);
        
        layer.renderInContext(UIGraphicsGetCurrentContext())
        let screenshot = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext();
        
        return screenshot;
        
    }
}

//利用方法
let screenshot = ScreenCaptureUtil.take();
UIImageWriteToSavedPhotosAlbum(screenshot, nil, nil, nil);

追記(2014/12/18) XCode6.1にバージョンアップするとエラーが、、、

UIWindowやLayerをアンラップしないとダメでした。仕様がどんどん調整されてるようです、流石Apple。。。。


        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);
       

UIViewの画像を抜き出す場合

次のページに記載しておりますので、よろしければご参照ください!UIViewからUIImageを出力

↓こんな記事もありますよ!

UINavigationController

TabBarとUITableViewControllerを利用して一つのUIViewControllerだけをクリックすると右にスライドするUINavigationControlerを 利用したサンプルを記載します。というのも、AppDelegate内でUINavigationをself.windowのrootviewcontrollerにセットする 方法は多々あったのですが、AppDelegate内を利用しないでNavigationを実装する方法がなくハマっていましたのでを以下記載します

UITextViewでテキストを複数行表示する

UITextFieldは一行表示ですが、UITextFieldは複数行を表示することができます。

Swiftがオープンソース化!!!(WWDC2015)

2:22:00からSwiftの話です!オープンソースを発表したタイミングは2:23:28のあたり。拍手喝采です。
このエントリーをはてなブックマークに追加
右側のFacebookのLikeをクリック頂けると記事更新の際に通知されますので宜しければご利用下さい!