2013-10-24 2 views
0

Резюме ОбзорC# MonoTouch/Xamarin - UITableViewCell GetCell ImageView Кадр Не Изменение размера

У меня есть следующий переопределение GetCell в моем UITableViewSource. Все работает отлично, но я хочу, чтобы изображение с левой стороны ячейки было меньше, без необходимости изменять его размер. По сути, я просто хочу уменьшить рамку, чтобы сказать (30 ширина х 30 высоты) .... и, возможно, вокруг углов (похоже на список открытых чатов Whatsapp).

Проблема

Просто применение новой RectangleF к свойству кадров в ImageView не похоже на работу.

if (tableItems[indexPath.Section].Items[indexPath.Row].ImageName != null) 
           { 
//RESIZE IMAGE VIEW 
cell.ImageView.Frame = new RectangleF(5,5,30,30); 
             Console.WriteLine("Image name: " + tableItems[indexPath.Section].Items[indexPath.Row].ImageName); 
             cell.ImageView.Image = UIImage.FromFile (tableItems[indexPath.Section].Items[indexPath.Row].Image); 
           } 

КОД

public override UITableViewCell GetCell (UITableView tableView, NSIndexPath indexPath) 
      { 
        UITableViewCell cell = tableView.DequeueReusableCell (cellIdentifier); 
        Custom_UITableItem item = tableItems[indexPath.Section].Items[indexPath.Row]; 
        var cellStyle = UITableViewCellStyle.Subtitle; 

        // if there are no cells to reuse, create a new one 
        if (cell == null) 
        { 
          cell = new UITableViewCell (cellStyle, cellIdentifier); 
        } 

        try 
        { 
          if(cellAccessoryButtons.Count > 0) 
          { 
            var cellAccessoryButton = cellAccessoryButtons [indexPath.Row]; 
            cell.AccessoryView = cellAccessoryButton; 
          } 

          cell.TextLabel.Text = tableItems[indexPath.Section].Items[indexPath.Row].Heading; 
          cell.TextLabel.Font = AppSettings.CellDetailTextLabelFontSize; 
          cell.TextLabel.LineBreakMode = UILineBreakMode.WordWrap; 
          cell.TextLabel.Lines = 2; 
          cell.DetailTextLabel.Text = tableItems[indexPath.Section].Items[indexPath.Row].SubHeading; 
          cell.DetailTextLabel.Font = AppSettings.CellDetailTextLabelFontSize; 
          cell.DetailTextLabel.LineBreakMode = UILineBreakMode.WordWrap; 
          cell.DetailTextLabel.Lines = 2; 

          if (tableItems[indexPath.Section].Items[indexPath.Row].ImageName != null) 
          { 
//RESIZE IMAGE VIEW 
cell.ImageView.Frame = new RectangleF(5,5,30,30); 

            Console.WriteLine("Image name: " + tableItems[indexPath.Section].Items[indexPath.Row].ImageName); 
            cell.ImageView.Image = UIImage.FromFile (tableItems[indexPath.Section].Items[indexPath.Row].Image); 
          } 

          var trackUploadedDateFrame = new RectangleF (87, 55, 100, 20); 
          var trackUploadedDate = new UILabel (trackUploadedDateFrame); 
          trackUploadedDate.BackgroundColor = UIColor.Clear; 
          trackUploadedDate.Font = AppSettings.TrackUploadedDateFontSize; 
          trackUploadedDate.TextAlignment = UITextAlignment.Left; 
          trackUploadedDate.Text = "Uploaded: 16/10/13"; 
          cell.AddSubview (trackUploadedDate); 

        } 
        catch(Exception ex) 
        { 
          Console.WriteLine (ex.ToString()); 
        } 

        return cell; 
      } 

ответ

1

Короче «был там, сделал это», и позвольте мне сказать вам, настраивая на складе UITableViewCell - особенно это ImageView является королевская боль.

Из моего опыта легче достичь цели вашего проекта, подклассифицируя UITableViewCell - либо в коде, либо в формате .xib с использованием IB - если функциональность запаса UITableViewCell очень близка к вашим собственным целям.

+0

Я бы не сказал, что это было сложно ... и все, что можно сделать в построителе интерфейса, можно сделать в коде. Мне просто интересно, нужно ли мне явно создать новый UIView для этого изображения, установить размер кадра, добавить изображение, а затем привязать этот новый UIView к элементу cell.ImageView ... (хотя, к сожалению, я не дома, так что пока не могу проверить этот вариант). – Goober

Смежные вопросы