У меня есть 3 элемента пользовательского интерфейса в contentView
UITableViewCell
, которые необходимо правильно выровнять, когда устройство вращается. В настоящее время я в жизнь рамки этих элементов пользовательского интерфейса, как это:UITableViewCell autoresizingmask issue
segmentedControl1.frame = CGRectMake(165, 15, 130, 40);
segmentedControl2.frame = CGRectMake(435, 15, 130, 40);
segmentedControl3.frame = CGRectMake(710, 15, 130, 40);
Я хотел бы знать, как я могу использовать свойство autoresizingMask этих элементов, чтобы сделать их размер и не-наложение друг на друга, когда устройство поворот с Пейзаж на портрет (по умолчанию портрет, только iPad). Я не хочу иметь пользовательские позиции кадра для каждой ориентации.
Я пытался что-то вроде этого:
segmentedControl1.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleRightMargin;
segmentedControl2.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin;
segmentedControl3.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin;
Но это не похоже на работу. Элементы все перекрываются и несчастливо выкладываются.
Любые предложения?
UPDATE 1
Вот что в настоящее время выглядит вид ячейки таблицы, как в ландшафтном режиме:
--------------------------------------------------------------------------
| ============ ============ ============ |
| | A | B | | A | B | | A | B | |
| ============ ============ ============ |
--------------------------------------------------------------------------
И вот что я хочу, когда устройство поворачивается в портретный режим:
-------------------------------------------------------
| ============ ============ ============ |
| | A | B | | A | B | | A | B | |
| ============ ============ ============ |
-------------------------------------------------------
ОБНОВЛЕНИЕ 2 Вот моя компания де в cellForRowAtIndexPath включения предложений от @Wolfert
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
cell.contentView.autoresizingMask = UIViewAutoresizingFlexibleWidth;
// Configure the cell...
segmentedControl1.frame = CGRectMake(165, 15, 180, 40);
segmentedControl1.tag = indexPath.row;
segmentedControl1.autoresizingMask = UIViewAutoresizingFlexibleRightMargin;
[cell.contentView addSubview:segmentedControl1];
segmentedControl2.frame = CGRectMake(435, 15, 180, 40);
segmentedControl2.tag = indexPath.row;
segmentedControl2.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin;
[cell.contentView addSubview:segmentedControl2];
segmentedControl3.frame = CGRectMake(710, 15, 180, 40);
segmentedControl3.tag = indexPath.row;
segmentedControl3.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin;
[cell.contentView addSubview:segmentedControl3];
return cell;
}
Это не работает ... извините! Любые дополнительные предложения? Я обновил вопрос с некоторыми графиками, чтобы показать, о чем я говорю ... – Ravi
Извините, моя вина. Я повторил взгляды, чтобы проверить мое решение, и оно действительно потерпело неудачу. - Я обновил свой ответ с рабочей и проверенной версией: – Wolfert
Эй, @Wolfert, я включил ваши предложения, но он все еще не работает. Фактически, с вышеуказанными значениями autoresizingMask, segmentedControl2 и segmentedControl3 исчезают ... Я обновил свой вопрос с использованием фактического кода, который я использую. – Ravi