У меня есть собственный класс, унаследованный от класса UITableViewCell
, который показывает либо изображение (слева от заголовка), либо общий темный квадрат, если изображение недоступно). Следующий код показывает темный квадрат на светлом фоне ячейки:
imageView = [[UIImageView alloc] initWithFrame:CGRectMake(11, 6, 40, 40)];
[imageView setBackgroundColor:kBackgroundGreyColour];
[cell.contentView addSubview:imageView];
Однако вместо создания настраиваемого подпредставления в каждой ячейке таблицы я бы предпочел использовать существующее свойство imageView универсального класса UITableViewCell
и изменить его так, чтобы он отображал квадрат, как в коде выше. Вот что я сейчас пытаюсь:
UIImageView* iv = [[UIImageView alloc] initWithFrame:CGRectMake(11, 6, 40, 40)];
[iv setBackgroundColor:[UIColor redColor]];
self.imageView.hidden = NO;
self.imageView.opaque = iv.opaque;
self.imageView.alpha = iv.alpha;
self.imageView.image = iv.image;
[self bringSubviewToFront:self.imageView];
[self.imageView setBackgroundColor:[UIColor redColor]];
Я добавил все эти строки, чтобы задать для всех существующих свойств UIImageView
те же значения, что и для созданного экземпляра UIImageView
в первом фрагменте кода, но во втором фрагменте кода не отображается темный квадрат. Он просто ничего не показывает, а ячейка выглядит так, как будто есть только светлый фон и не видно изображение. Но я вижу, что свойство imageView не равно nil, поэтому выполнение всех этих строк кода во втором фрагменте должно что-то показывать?
Однако, как только я назначу новое изображение свойству imageView (например, self.imageView.image = [[UIImage alloc] init ...], квадрат показывает назначенное изображение без проблем.
Редактировать: просто обратите внимание, что во втором случае я устанавливаю фрейм imageView в функции layoutSubview, например ::
-(void)layoutSubviews
{
[super layoutSubviews];
self.imageView.frame = CGRectMake(11, 6, 40, 40);
}
Итак, мои вопросы:
1. Какие свойства существующего свойства imageView мне нужно установить и на какие значения, чтобы код отображал квадрат, заполненный определенным цветом (как это делает первый фрагмент кода)?
Существует ли способ создания UIImage
программно, чтобы он отображал только цвет фона без какого-либо изображения, связанного с ним (и который я мог бы использовать, чтобы установить свойство imageView.image для отображения этого цвета).
Можно ли заменить существующее свойство imageView в классе UITableViewCell
настраиваемым представлением без добавления настраиваемого подпредставления (как это сделал первый фрагмент кода), чтобы я мог показать заполнитель UIView с фоном цвет, когда изображение недоступно?