2011-10-14 70 views
1

在iOS < 5.0,此代碼爲我的一個分組的表格:iOS5中的UITableViewCell contentView寬度變化?

NSLog(@"%f", cell.contentView.bounds.size.width); 

返回302

但在iOS5的,相同的代碼返回320(即,包括分組的邊緣寬度中的單元格佈局)。

這是預期的行爲?

如果是這樣,那麼我該如何可靠地獲得不包括邊距的分組的tableview單元的寬度?

回答

2

我認爲這種變化與電池的佈局的定時和302的寬度做在viewWill設定*或viewDid *方法時更是已知大約配件,tableview中風格等

當我遇到這個問題時,我通過適當地設置autoresizingMask屬性來修復它,以便在代碼中將contentView調整爲302之後。

因爲我得到的界限寬度,所以我可以在電池的右側添加一個文本字段,只需添加:

valueTextField.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin; 

使其彈回至它在哪裏的iOS5之前。我懷疑如果設備被旋轉或進出編輯模式,我會得到更好的行爲,但是這個特定的tableview不會執行其中任何一種。

希望這有助於你!

+0

好的解決方案,但實際上在需要旋轉的情況下,它會阻止正確的自動修復:( – Clafou

+0

這太糟糕了,但是如果設置正確,它應該有助於調整大小時如果單元格變寬時,相對於右側,它應該正確地移動到右側,如果它應該保持在原來的位置,相對於單元格的左側,那麼檢查寬度是不太必要的,只需設置位置。圍繞它似乎是通過手動調整viewWillAppear中的大小或位置。 – LavaSlider