2013-04-23 36 views
3

這是殺了我!
我有一個UITableView與單元格中有一個圖像,名稱和電話號碼。
看看這裏:UITableViewCell調整高度無需更改它的內容lauout

enter image description here

現在,我想觸摸它,所以我可以在裏面添加一些按鈕時耗費電池的高度。當我消耗細胞時,我也改變了它的bg圖像(更高的圖像)。
我這樣做,用[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];和它的作品不錯,動畫單元格下來順利,但它也改變了單元格的內容:

Cell's content resized :(

什麼我可以做這樣的內容將會保留,因爲它是後細胞大小調整?

BTW,我沒有嘗試使用,
[_tableView beginUpdates];
[_tableView endUpdates];
但細胞只是「躍升」到它的新高度,所以我放棄了。

+1

或者應用適當的調整大小的規則,以便標籤/圖像上海華不當小區視圖被調整大小或重新調整大小覆蓋細胞'layoutSubviews'控制子視圖的位置。前一種解決方案通常適用於框架,後者適用於框架,您可以根據需要合併它們。 – 2013-04-23 09:09:04

回答

0

謝謝大家的答案,但沒有任何幫助。 起初,我使用了內置的單元格項(imageView,textLabel,detailTextLabel),並且隨着單元格轉換,它們的大小也在變化。
當我將自定義子視圖和已定義的框架添加到其工作的單元格中時。

2

您需要了解contentView的佈局。

如果您使用Autolayout,請檢查您的約束條件(cell.contentView.constraints)。如果使用UIViewAutoresizing,請爲contentView的所有子視圖設置正確的autoresizingMasks(cell.contentView.autoresizingMask)。您也可以嘗試關閉autoResizing(cell.contentView.autoresizesSubviews = NO),但這可能會導致錯誤的結果。

另外我想知道,爲什麼在單元格backgroundImage中有一個箭頭?可能你也應該使用其他圖像。

+0

箭頭看起來不錯,它提醒了一個標準的popover,它必須是一個很好的用戶體驗。 – 2013-04-23 09:14:06

+0

bg圖像是從另一個項目借用的。一旦我解決了這個問題,我會創建自己的圖像:) – Gal 2013-04-23 09:32:41

1

嘗試設置UIViewAutoresizing將固定頂部邊距中的名稱和電話號碼標籤(或內容中的任何其他UI元素)遮罩。

2

您可以在擴展之前創建兩個自定義單元格,爲擴展單元格創建另一個自定義單元格。 當您觸摸單元格存儲所選單元格indexpath並重新加載表格時,請在cellForRowAtIndexPath:中檢查indexpath和加載單元。

0

嘗試以下方法代表團設置的tableview

的高度
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 
    return 70.0; 
} 

您可以創建一個陣列圖像

imgPaths = [[NSArray alloc] 
       initWithObjects: 
       [[NSBundle mainBundle] pathForResource:@"abc" ofType:@"png"], 
       [[NSBundle mainBundle] pathForResource:@"def" ofType:@"png"],nil]; 

添加它的cellForRowAtIndexPath方法。

例如:

[cell.imageView setImage:[UIImage imageWithContentsOfFile:[imgPaths objectAtIndex:indexPath.row]]];