У меня есть код, который создает ячейку таблицы с ползунком. Это довольно просто и хорошо подходит для iPhone. Я немного анонимизировал это здесь:
UITableViewCell* cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Foo"] autorelease];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
CGRect contentViewFrame = cell.contentView.frame;
CGRect sliderFrame = CGRectMake(10, 0, 280, contentViewFrame.size.height);
UISlider* slider = [[UISlider alloc] initWithFrame:sliderFrame];
UIImage* minimumImage = [UIImage imageNamed:@"min.png"];
UIImage* maximumImage = [UIImage imageNamed:@"max.png"];
slider.minimumValueImage = minimumImage;
slider.maximumValueImage = maximumImage;
slider.value = 0.5f;
[slider addTarget:self action:@selector(sliderAction:) forControlEvents:UIControlEventValueChanged];
[cell.contentView addSubview:slider];
[slider release];
Конечно, это неправильный размер для iPad. Поэтому моей первой мыслью было установить для свойства autoresizingMask
значение UIViewAutoresizingFlexibleWidth
. Проблема решена, верно? Нету. Теперь на iPhone ширина содержимого слайдер-плюс-изображения меньше 280, и поэтому он не подходит к концу - его длина составляет около 20 пикселей.
На iPad то же самое - ширина UISlider
автоматически изменяет размер примерно до 20 пикселей до конца ячейки.
Возможно, флаг автоматического изменения размера обращает внимание на несуществующую accessoryView
ячейки? Я попытался явно установить nil
, но я думаю, что по умолчанию nil
, поэтому ничего не изменилось.
Я бы хотел, чтобы размер содержимого этой ячейки автоматически изменялся на «полную» ширину ячейки независимо от устройства и ориентации. Есть ли простой способ сделать это?