У меня есть некоторый код, который создает ячейку таблицы с ползунком. Это довольно просто, и это измеряет хорошо на 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
по умолчанию, таким образом, ничто не изменилось.
Я хотел бы, чтобы содержание этой ячейки изменило размер автоматически, чтобы быть "полной" шириной ячейки, независимо от устройства и ориентации. Существует ли простой способ сделать это?
Вы должны иметь возможность указать системе изменения размера, чтобы она «прикрепляла» объект на фиксированном расстоянии от правого края (где он не изменяет размер достаточно далеко). Если вы поэкспериментируете с IB, вы можете создать вид, размер которого изменяется по ширине и фиксируется справа.
У вас также установлен UIViewAutoresizingF flexibleRightMargin?
Это работает именно так, как вы описали. Я склонен думать, что это ошибка iOS. На iPAD при создании нового UITableViewCell его ширина устанавливается на 320. жестко закодирована(!) и view и contentView. Она не изменяет размер должным образом, если установлено значение UIViewAutoresizingFlexibleWidth
. Я установил view.frame.size.width/2 с забавными результатами: на iPhone - 160, на iPad - 608!!!
В итоге я вручную изменил размер ячеек и их содержимого.