我在UITableViewCell
的contentView
中有3個UI元素,需要在設備旋轉時正確對齊。目前,我執行這樣,這些UI元素的框架:UITableViewCell autoresizingmask問題
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;
但這似乎並沒有工作。這些元素都是重疊的,並且不幸地佈置。
有什麼建議嗎?
更新1
下面是表視圖單元格目前看起來像在橫向模式下:
--------------------------------------------------------------------------
| ============ ============ ============ |
| | A | B | | A | B | | A | B | |
| ============ ============ ============ |
--------------------------------------------------------------------------
這裏就是我想要的,當設備被旋轉到肖像模式:
-------------------------------------------------------
| ============ ============ ============ |
| | A | B | | A | B | | A | B | |
| ============ ============ ============ |
-------------------------------------------------------
UPDATE 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 2011-12-21 22:40:53
對不起,我的錯。我複製了觀點來測試我的解決方案,但確實失敗了。 - 我已經更新了我的答案,並帶有工作和測試版本:) – Wolfert 2011-12-22 08:54:40
嘿@Wolfert,我整合了你的建議,但它似乎仍然不起作用。事實上,通過上面的autoresizingMask值,segmentedControl2和segmentedControl3正在消失......我用我正在使用的實際代碼更新了我的問題。 – Ravi 2011-12-23 01:26:08