Резюме Обзор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;
}
Я бы не сказал, что это было сложно ... и все, что можно сделать в построителе интерфейса, можно сделать в коде. Мне просто интересно, нужно ли мне явно создать новый UIView для этого изображения, установить размер кадра, добавить изображение, а затем привязать этот новый UIView к элементу cell.ImageView ... (хотя, к сожалению, я не дома, так что пока не могу проверить этот вариант). – Goober