У меня есть код, который создает ячейку таблицы со слайдером. Это довольно просто, и он хорошо подходит для 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
по умолчанию, поэтому ничего не изменилось.
Я хотел бы, чтобы этот контент ячейки автоматически изменялся, чтобы быть "полной" шириной ячейки, независимо от устройства и ориентации. Есть ли простой способ сделать это?