Изменение размеров ширины содержания UITableViewCell автоматически

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

Я хотел бы, чтобы содержание этой ячейки изменило размер автоматически, чтобы быть "полной" шириной ячейки, независимо от устройства и ориентации. Существует ли простой способ сделать это?

13
задан Shaggy Frog 28 July 2010 в 22:46
поделиться

2 ответа

Вы должны иметь возможность указать системе изменения размера, чтобы она «прикрепляла» объект на фиксированном расстоянии от правого края (где он не изменяет размер достаточно далеко). Если вы поэкспериментируете с IB, вы можете создать вид, размер которого изменяется по ширине и фиксируется справа.

У вас также установлен UIViewAutoresizingF flexibleRightMargin?

3
ответ дан 1 December 2019 в 22:22
поделиться

Это работает именно так, как вы описали. Я склонен думать, что это ошибка iOS. На iPAD при создании нового UITableViewCell его ширина устанавливается на 320. жестко закодирована(!) и view и contentView. Она не изменяет размер должным образом, если установлено значение UIViewAutoresizingFlexibleWidth. Я установил view.frame.size.width/2 с забавными результатами: на iPhone - 160, на iPad - 608!!!

В итоге я вручную изменил размер ячеек и их содержимого.

10
ответ дан 1 December 2019 в 22:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: