タグ

ブックマーク / www.j7lg.com (3)

  • AVFoundationを使った動画再生について | J7LG

    先日ポストした後輩が作るアプリは動画を再生するアプリを作るみたい。 動画再生にはMPMoviePlayerControllerがあるが、動画をアプリからコントロールするので、MPMoviePlayerControllerに表示される再生ボタンなどのコントローラーはいらないらしい。 そうなると、AVFoundationを使って表示させた方が都合がいいです。 重要なクラスは、以下の2つ。 1. AVPlayer 動画を制御するクラス。 動画についての様々な情報も持っている。 2. AVPlayerLayer 動画を表示するクラス。 AVPlayerLayerはCoreAnimationのCALayerのサブクラス。 レイヤーなので、UIViewのlayerプロパティなどに追加(addSublayer)して使う。 よく見るこのページでは、UIViewのクラスメソッドlayerClass

  • iOSのUIViewを画像に抽出する | J7LG

    UIViewの表示内容は、画像コンテキストからUIImageとして取得できるので、そのまま画像に保存することが可能です。 以下のコードは、MKPinAnnotationViewを、ピンのカラーを指定して画像に出力するコードです。 - (void)writePinAnnotationView:(MKPinAnnotationColor)pinColor { static NSString *annotationIdentifier = @"Annotation"; MKPinAnnotationView *view =[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:annotationIdentifier]; view.pinColor = pinColor; NSString *file

  • UIImageを合成して新しいイメージを作る2 | J7LG

    前回のポストで反響がいいので、もう一発。 前回はがっつりUIKitを使っているため、メインスレッドで合成が行われる。 つまり、大きい寸法のUIImageを合成する時など、処理に時間がかかる場合は、合成処理中に画面上での次の処理がしばらく止まることがある。 んじゃぁどぉするの?ってことで、GCDを使って別スレッドでUIKitを使わずに合成を行う。 実際のサンプルコードの前に、方法の概要から説明すると、以下のようなメソッドで処理を行う - (void)foo:[終了blocks] { // 1. 合成処理の下準備を行う dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{ // 2. ここで合成処理を行う dispatch_async(dispatch_get_main_queue(), ^{

  • 1