У меня есть код, который создает ячейку таблицы со слайдером. Это довольно просто, и он отлично подходит для iPhone. Я немного анонимизировал его здесь:Изменение размера содержимого UITableViewCell автоматически
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
по умолчанию, поэтому ничего не изменилось.
Я бы хотел, чтобы содержимое этой ячейки автоматически изменялось, чтобы быть «полной» шириной ячейки, независимо от устройства и ориентации. Есть простой способ сделать это?
У меня нет набора 'UIViewAutoresizingFlexibleRightMargin'. Можете ли вы объяснить немного больше, как это сделать программно? Приведенный выше код анонимен, но именно то, что у меня есть сейчас. –