なかじまの開発ブログ

アプリ開発における備忘録などなど。

MENU

スクリーンショットを取得し、表示する【Objective-C】

便利だなーと思ったのでメモ。

Interface Builderに『撮影用のButton』と『スクリーンショット表示用のImageView』を設置。

f:id:s_nakajima:20151015142628p:plain

ImageViewはわかりやすく背景を灰色にしてます。
ModeはAspectFitにしました。

次に、ViewController.hにUIButtonをAction接続(ShootingBtnTap)し、UIImageViewをOutlet接続(imageView)します。

ではコーディング。

『ViewController.h』

#import <UIKit/UIKit.h>
#import <CoreGraphics/CoreGraphics.h>
#import <QuartzCore/QuartzCore.h>

@interface ViewController : UIViewController 

@property (weak, nonatomic) IBOutlet UIImageView *imageView;
- (IBAction)ShootingBtnTap:(id)sender;


『ViewController.m』

// 画面サイズ
#define WINSIZE self.view.bounds.size
  ・
  ・
  ・
@implementation ViewController

@synthesize imageView;

- (void)viewDidLoad {
  [super viewDidLoad];

  // わかりやすいようにUIImageViewに枠でもつけておく
  imageView.layer.borderWidth = 1.0;
  imageView.layer.borderColor = [UIColor blackColor].CGColor;
}
  ・
  ・
  ・
// スクリーンショットを撮影
- (IBAction)ShootingBtnTap:(id)sender {
  // スクショ画像生成
  UIGraphicsBeginImageContextWithOptions(WINSIZE, NO, 0.0f);
  CGContextRef context = UIGraphicsGetCurrentContext();
  [self.view.layer renderInContext:context];

  // スクショ画像を格納
  UIImage *scrImg = UIGraphicsGetImageFromCurrentImageContext();

  // 生成終了
  UIGraphicsEndImageContext();

  // 表示
  imageView.image = scrImg;
}
@end


これでUIImageViewにスクリーンショットが表示されます。

f:id:s_nakajima:20151015143934p:plain


応用すれば、特定のViewだけのスクショを撮ることも可能ですね。