this question が this blog post で回答されてから4年が経ちました。
URLの画像を使用してUIImageを作成する標準的な方法はありますか?何かのようなもの:
UIImage image = UIImage.FromFile("http://foo.com/bar.jpg");
本当にシンプルなものが欠けているように感じます。
ワンライナーではありませんが、ごく少数のラインで独自のロールを作成できます。例えば。
static UIImage FromUrl (string uri)
{
using (var url = new NSUrl (uri))
using (var data = NSData.FromUrl (url))
return UIImage.LoadFromData (data);
}
UIImage
からの呼び出しを含む呼び出しは、スレッドセーフです。
新しいawait/asyncサポートを使用すると、次のことができます。
public async Task<UIImage> LoadImage (string imageUrl)
{
var httpClient = new HttpClient();
Task<byte[]> contentsTask = httpClient.GetByteArrayAsync (imageUrl);
// await! control returns to the caller and the task continues to run on another thread
var contents = await contentsTask;
// load from bytes
return UIImage.LoadFromData (NSData.FromArray (contents));
}
これを次のように呼び出します:
someYourUIImageObjectOnUI.Image = await this.LoadImage ("some image url");
UIスレッドをブロックしないように、必ず非同期イメージをロードしてください。 MonoTouch.Dialogには、使用できる ImageLoader (セクション5.3を参照)クラスが含まれています。
画像の非同期読み込みに役立つ rlImageStore のバリエーションもいくつかあります。
最後に、手動で行う場合は、 Xamarin Recipe を使用できます。
上記を試してみましたが、素晴らしいアイデアのように見えますが、タイプSystem.Threading.Tasks.Task<MonoTouch.UIKit.UIImage>' to
Monotouch.UIKit.UIImageを暗黙的に変換できません
[解決策を見つけた]問題は
obj.Image = await this.LoadImage(imageUrl)も、asyncとマークされたメソッド内になければなりません。その後、動作します!
ありがとう