2013-06-01 2 views
1

Я пытаюсь отобразить фоновое изображение для MvxCollectionViewCell в приложении iPhone, построенном с помощью Xamarin и MvvmCross. Я ориентируюсь на iOS 6.0 и выше. Ниже приведен код, который я использую. У меня возникли проблемы с отображением фонового изображения. Я не могу понять, что я делаю неправильно. Похоже, это должно быть довольно прямолинейно. Я создал ячейку в XCode. Ячейка 100 X 100. Она содержит один UIImageView, который равен 90 X 72. X и Y для UIImageView составляют 5 и 8 соответственно. У меня также возникает проблема с изменением размера изображения в ячейке, но планируйте позже опубликовать другой вопрос.Отображать фон для MvxCollectionViewCell

using MonoTouch.UIKit; 
using Cirrious.MvvmCross.Binding.Touch.Views; 
using Cirrious.MvvmCross.Binding.BindingContext; 

namespace DriveThroughSafari.Touch.Views.Pictures 
{ 
public sealed partial class AnimalCutoutCell : MvxCollectionViewCell 
{ 
    public static readonly UINib Nib = UINib.FromName ("AnimalCutoutCell", NSBundle.MainBundle); 
    public static readonly NSString Key = new NSString ("AnimalCutoutCell"); 

    private readonly MvxImageViewLoader _loader; 

    public AnimalCutoutCell (IntPtr handle) : base (handle) 
    { 

     MainImage = new UIImageView(); 
     _loader = new MvxImageViewLoader(() => MainImage); 

     BackgroundView = new UIImageView {Image = new UIImage("Images/photo-frame")}; 

     this.DelayBind(() => 
      { 
       var set = this.CreateBindingSet<AnimalCutoutCell, AnimalDataViewModel>(); 
       set.Bind(_loader).To(animal => animal.ImageUrl); 
       set.Apply(); 
      }); 
    } 

    public static AnimalCutoutCell Create() 
    { 
     return (AnimalCutoutCell)Nib.Instantiate (null, null) [0]; 
    } 
    } 
} 

Я ценю помощь!

+0

Возможно, при загрузке пива ваш фон перезаписывается - есть переопределение, которое вы можете использовать - что-то вроде загруженного nib. Не в сети правильно в mo – Stuart

ответ

0

Я попытался модифицировать образец на: https://github.com/slodge/NPlus1DaysOfMvvmCross/tree/master/N-11-KittenView_Collections

Я изменил код, чтобы соответствовать вашим - включая эту строку в конструкторе:

BackgroundView = new UIImageView {Image = new UIImage("MyImage.png")}; 

Где образ MyImage.png был включен сборки действия content в корень проекта Touch.

Это работало отлично.


Я подозреваю, что первый шаг здесь, чтобы написать какой-нибудь тестовый код и использовать отладчик - что делает var myImage = UIImage.FromFile("Images/photo-frame") возвращения? Действительно ли это UIImage?

+0

Стюарт, как всегда, я ценю потрясающий отзыв! Оказывается, мое изображение было намного больше, чем UIImageView, и вместо того, чтобы изменять размер в представлении, он просто взял всю ячейку. Создание образа с правильными размерами решило проблему. Любые идеи по автоматическому изменению размера изображения в соответствии с UIImageView? Как вы можете видеть выше, я использую MvxImageViewLoader для загрузки данных. – blakeD

+0

новый вопрос для такого рода вещей (помогает с поиском) - но я думаю, что вы найдете ответ так же легко, как я, если вы ... ищете 'UIImageView' и' scale' - я уверен, найду ответ ... – Stuart