У меня есть проект MvvmCross, который использует MvxImageViewLoader
для загрузки изображений из URL-адресов в фоновом режиме. Я использую DefaultImagePath
, чтобы указать изображение по умолчанию, если URL-адрес неверен или URL не указан вообще.MvxImageViewLoader изображение по умолчанию игнорирование ресурсов сетчатки
Проблема заключается в том, что этот путь игнорирует изображения сетчатки @2x
из файловой системы и всегда отображает изображение не сетчатки.
Это код:
_imageLoader = new MvxImageViewLoader(() => ImageView)
{
// After loading the Image view, the scale of the image is always 1.0
DefaultImagePath = NSBundle.MainBundle.PathForResource("image", "png")
};
// At this point, ImageView.Image.CurrentScale is 1.0 (WRONG) on retina devices
где ImageView
является стандартным UIImageView
.
Но загрузка изображения с пути непосредственно работает:
// The scale of this image is 2.0 on retina devices (as expected)
var image = UIImage.FromFile(NSBundle.MainBundle.PathForResource("image", "png"));
В качестве временного решения, я добавил это условное именование:
var imageName = UIScreen.MainScreen.Scale > 1 ? "[email protected]" : "image";
_imageLoader = new MvxImageViewLoader(() => ImageView)
{
DefaultImagePath = NSBundle.MainBundle.PathForResource(imageName, "png")
};
// At this point, ImageView.Image.CurrentScale is 2.0 on retina devices as expected
Но это не принимать во внимание другие соглашения об именах как ~ipad
для iPad и @2x~ipad
для IPad сетчатки. Поэтому мне интересно, что я делаю что-то неправильно или это плагин MvvmCross, который должен использовать удобные методы инициализации UIImage
.
Кажется, что MvxTouchLocalFileImageLoader
класс already uses UIImage.FromFile
, поэтому я не уверен, почему поведение отличается.
EDIT: Описание: downloadable sample project Воспроизведение проблемы.
Спасибо.
Если вы просто используете 'UIImage.FromFile' в каком-либо тестовом коде в своем приложении, правильно ли он отображает изображения сетчатки? Если нет, попробуйте сначала решить эту проблему - проверьте действия сборки, попробуйте очистить/перестроить и т. Д. Если тестовый код действительно работает, я немного застрял в идеях прямо сейчас. – Stuart
@Stuart второй кусок кода - это именно тот случай, и он работает так, как ожидалось. – redent84
@Stuart добавил пример проекта, воспроизводящего проблему – redent84