本記事では、Xamarin.iOSを使ってUIImageオブジェクトをプログラム(コード)だけで動的に生成する基本となる方法を紹介します。Objective-Cで実現する方法については下記の記事をご覧ください。
以下、サイズを指定して空の(または単色の)UIImageオブジェクトを生成する方法をご紹介します。
private UIImage CreateImage(CoreGraphics.CGSize size, CoreGraphics.CGColor fillColor = null) { UIImage image = null; // ビットマップ形式のグラフィックスコンテキストの生成 UIGraphics.BeginImageContextWithOptions( size, true, 0); var context = UIGraphics.GetCurrentContext(); // 指定した色で塗りつぶす if (fillColor != null) { context.SetFillColor(fillColor); context.FillRect(new CoreGraphics.CGRect( new CoreGraphics.CGPoint(0, 0), size)); } // 現在のグラフィックスコンテキストの画像を取得する image = UIGraphics.GetImageFromCurrentImageContext(); // 現在のグラフィックスコンテキストへの編集を終了 // (スタックの先頭から削除する) UIGraphics.EndImageContext(); return image; }
このCreateImageメソッドは以下のように使用します。以下のサンプルコードではGetCellメソッド
で使っていることとしましょう。
var image = CreateImage( new CoreGraphics.CGSize(50, 50), UIColor.Purple.CGColor); ... cell.ImageView.Image = image;
UITableViewCellに設定されたImageViewは下図のようになります。見ての通り、50pt x 50ptの単色で塗られたUIImageができました。
このTipsは、UIGraphicsを使って画像を生成する上でもっともシンプルなコードです。
関連記事
Xamarin.iOSを使ってアプリ開発する際に逆引きとしてお使いください。