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

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

NSNotificationCenterでコード間のイベントやりとり

AppDelegateのイベント(アプリがアクティブ)になるタイミングでViewControllerに通知する為にはどうすればいいのか?と 調査しているとこのクラスにたどり着きました。delegateを利用せずにイベントの通知をViewController間で簡単に実装できるので 使いやすいです!

NSURLSessionでバックグラウンドで通信処理

NSURLConnectionの進化版のような立ち位置に私は感じております。アプリがバックグラウンドになっても通信処理を続けてくれる優れものです。 以前まではどうやら音声や位置情報だけに限られていましたが、このクラスによって大きなデータをユーザに気持ちよくDLしてもらうことも可能にです。

UISwitchで切り替えスイッチコントロール

スイッチによるONOFFを実装するためのコントロールの説明です。
このエントリーをはてなブックマークに追加
右側のFacebookのLikeをクリック頂けると記事更新の際に通知されますので宜しければご利用下さい!