↑クリックして拡大
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大

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

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を出力

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


2021-05-14 14:21:41

WatchOSのwatchconnectivityのFiletransferの落とし穴。と、避け方。

AppleWatch 実機だと成功するんだけど、シュミレーターだと失敗するという、、、 昔作成してた時は成功してたのになーと思って調べると、どうやら昔は成功してたみたい。watchOS6以降は...

2021-05-06 14:04:37

LINEのアニメーションスタンプ制作の落とし穴、、、失敗談

ゴールデンウィークにLINEスタンプを作成してみました。 作り切って申請も通したんですが、意図したアニメーションと違う、、、、 LINEクリエーターの画面だと、アニメーションのプレビュー...

2021-05-01 18:05:35

久しぶりのAdmobをobjective-cに実装。コンパイルエラーだらけ。バーミッション不具合でエミュレータにインスコできない。

忘れないようにメモ エミュレータにアプリをインストールする際にパーミッション系のエラーがでた時、また、iphone実機にインストールする際にも権限系のエラーが出る場合。 ターゲット→ex...
このエントリーをはてなブックマークに追加
右側のFacebookのLikeをクリック頂けると記事更新の際に通知されますので宜しければご利用下さい!