読者です 読者をやめる 読者になる 読者になる

Xamarin 日本語情報

Xamarin(ザマリン) の代理店だったエクセルソフト田淵のブログです。主に Xamarin に関するエントリーをアップしていきます。(なるべく正しい有益な情報を掲載していきたいと考えていますが、このブログのエントリーは所属組織の公式見解ではありませんのでご注意ください)

UIImageView に Url で取得した画像を指定するには

Xamarin Xamarin.iOS

こんにちは。エクセルソフトの田淵です。

Xamarin.iOS をいじっていて、UITableView に独自のセルを作る方法を調べていたところ、UIImageViewUIImage Image プロパティに URL で引っ張ってきた画像を指定する方法でちょっとハマったのでメモとして残しておきます。

github.com

この、Xamarin Dev Days で作るアプリの Xamarin.iOS 版を作っています。Azure まで実装するかは検討中w

f:id:ytabuchi:20161207210950g:plain:w300

今回は、これの画像部分をどう指定したか?というお話です。

UITableView のカスタムセルを作る話は追って別のエントリーで書きたいと思います。

UIImage の FromXXX メソッド

UIImage には、From〜〜 というメソッドが幾つか用意されています。

  • FromBudle (string name)
    Bundle から引っ張ってきます。
  • FromFile (string filename)
    ファイル名を指定して引っ張ってきます。
  • FromImage (CGImage image)
    CGImageCIImageから引っ張ってきます。
  • FromResource (Assembly assembly, string name)
    Resourceアセンブリから引っ張ってきます。
  • LoadFromData (NSData data)
    データから引っ張ってきます。

ただし、Xamarin.Forms にはありましたが、iOS には FromUrl (string path) が無いようです。

stackoverflow.com

調べていたら、こちらに情報がありました。

以下のような imageUrl を引数に実行すると UIImage を返してくれるメソッドを用意して、

private async Task<UIImage> LoadImage(string imageUrl)
{
    using (var client = new HttpClient())
    {
        // imageUrlからバイト配列を取得します。
        byte[] contents = await client.GetByteArrayAsync(imageUrl);
        // バイト配列のデータからUIImageを生成します。
        return UIImage.LoadFromData(NSData.FromArray(contents));
    }
}

UITableViewSource に再度流し込んで、TableView を ReloadData() で再読込すれば OK です。

var src = CustomTableView.Source as CustomTableViewSource;
src.Items.Clear();
foreach (var x in tableItems)
{
    src.Items.Add(x);
}
CustomTableView.ReloadData();

github.com

一応アップしましたが、「XiOS_App01」とかになっているので、ソリューション名とかちゃんとして再度アップし直します。すみません。 多分合っていると思いますが、識者の方ツッコミお待ちしています。

Xamarin 気になった方は

是非 ダウンロード して触ってみてください。Visual Studio 2015 をご利用の方は Update 3 にアップデートする際にカスタムインストールで Xamarin を追加しましょう。 学習用リソースJXUG リンクページ に参考資料を纏めてますので併せてどうぞ。

Xamarin の導入支援サービスを始めました。ベースは基本的なアプリを一緒に作ることで Xamarin を使えるようになって頂く内容ですが、ご要望に応じて講習内容のカスタマイズも可能です。詳しくは田淵までお問い合わせください(^^)

有償セミナー、トレーニング | Xamarin : XLsoft エクセルソフト

Xamarin の情報が欲しい方はこのブログも購読いただいたり、私のTwitterアカウントをフォローいただいたりすると嬉しいです。

私が所属している エクセルソフト の宣伝を少しさせてください。弊社は開発者向けの様々なソフトウェアを扱っています。おなじみの ReSharper (JetBrains)、 や Atlassian の JIRA, Confluence、Office/PDF ファイルを .NET/Java で操作するライブラリ Aspose(アスポーズ)Windows アプリ、Web ページ、iOS/Android アプリの UI テストができる TestComplete などお勧めです(^^) また、Visual Studio Professional/Enterprise with MSDN も販売してますし、日本で売っていない海外のソフトウェア、開発ツールなどを弊社経由で日本円で購入頂くことも可能です。ご興味あれば 弊社ページ を覗いてみてください。

以上です。