[Objective-C]様々なメモ - 印刷(AirPrint), TCP/IP接続, CoreLocation, ビルド番号, ARCなど

ほとんどリンクばかりです。

印刷(AirPrint)

参考サイト

UIPrintInfo

これを printInteractionController.printInfo プロパティに設定することで印刷設定ができる。

  UIPrintInfo *info = [[UIPrintInfo alloc] init];

  // 印刷ジョブの名前
  info.jobName = @"任意の文字列(長過ぎるとプリンタでエラーが発生する可能性あり)";

  // 印刷用紙の向き - 縦Portrait 横Landscape の2択
  info.orientation = UIPrintInfoOrientationLandscape;

  // カラー設定 : General, Grayscale, Photo の3択
  // UIPrintInfoOutputGeneral は カラー印刷
  // UIPrintInfoOutputGrayscale は 白黒印刷
  // UIPrintInfoOutputPhoto は 写真サイズで印刷
  info.outputType = UIPrintInfoOutputGeneral;

  // 両面印刷/片面印刷 None, LongEdge, ShortEdge の3択
  info.duplex = UIPrintInfoDuplexLongEdge;

  // info.printerID = @"このプロパティは良く分からなかった…";

  // 設定しなかった項目はデフォルト設定値が利用される

UIPrintInteractionController

シングルトンを取得して使用する。

  UIPrintInteractionController *controller = [UIPrintInteractionController sharedPrintController];

  // UIPrintINteractionControllerDelegate を採用したクラスをセット
  controller.delegate = self;

  // 印刷情報を表示
  controller.printInfo = uiPrintInfo;

  // 印刷するページの範囲を選択可能かどうか
  controller.showsPageRange = YES;

  // 以下の3つの内どれかでプリントするものを設定する
#ifdef HOGE
  controller.printFormatter = [webView viewPrintFormatter];
#elif PIYO
  controller.printingItem = PDFとかUIImageとかURL(PDF)とか
#else
//  controller.printPageRenderer = UIPrintRangeRendererインスタンス;
#endif

  void (^handler)(UIPrintInteractionController*,BOOL,NSError*) =
  ^(UIPrintInteractionController *printInteractionController,
    BOOL completed,
    NSError *error) {
    // 完了時のハンドラ
  };

  // 印刷インタラクションの表示
#ifdef FOO
  [controller presentAnimated:YES completionHandler:handler];
#elif BAR
  [controller presentFromBarButtonItem:uiBarButtonItem
              animated:YES
         completionHandler:handler];
#else
  [controller presentFromRect:CGRectMake(10, 20, 100, 200)
           inView:uiView
         animated:YES
        completionHandler:handler];
#endif

TCP/IP 接続

iPhone アプリの場合は CFStreamCreatePairWithSocketToHost でストリームを開く。開いたストリームを NSStream 系のものにキャストして、NSOutputStream#writeToServer: でサーバにデータ送信、NSStreamDelegate#stream:handleEvent: でサーバから送られてきたデータをハンドリングする。

iPhoneネットワークプログラミング - インターネットコム がとても詳しいので一読すればOK

CoreLocation のメモ

位置情報を利用するための機能

  • Location 位置サービス
    locationServicesEnabled クラスメソッドで使用可能かどうかを判定して startUpdateLocation で位置情報の取得を開始。あとはデリゲートのメソッドで処理する。
  • Heading 方角サービス(コンパス)
    headingAvailable クラスメソッドで使用可能かどうかを判定して startUpdateHeading で方角情報の取得を開始。あとはデリゲートの
  • Region 境界線横断モニター
    regionMonitoringAvailable クラスメソッドで使用可能かどうかを判定して startMonitoringForRegion: メソッドで開始。あとは

参考にしたサイト

ビルド番号について

ARC の設定やコードのARC変換など

Share