2014-12-28 25 views
2

爲了簡單起見,我只是使用uitableviewcell而不是uiscrollview做了登錄屏幕,但事實證明這是一場災難。UItableviewcell亂七八糟的顯示,他們只是無法正確使用iphone6 +獲得屏幕寬度。 (objc)

我將單元格顏色變爲綠色,以便您清楚地看到它。下面是它的外觀在iPhone6 +: enter image description here

下面是如何看起來在iPhone 5: enter image description here

所以這裏的問題是的UILabel,同時也是UITextField沒有得到IP6 +屏幕尺寸。我用這個代碼來設置它們應得到正確的屏幕尺寸

screenWidth = [[UIScreen mainScreen] bounds].size.width; 
UITableViewCell *cell = [[UITableViewCell alloc] initWithFrame:CGRectMake(0, 0, screenWidth, 44)]; 
UITextField *field = [[UITextField alloc] initWithFrame:cell.contentView.layer.bounds]; 
OR 
UILabel *uiLabel = [[UILabel alloc] initWithFrame:cell.contentView.frame]; 

我的主要問題是,如果UIScreen不起作用,我們如何得到適當的寬度爲iPhone 6+?

+0

你有一個解決方案,所以我只想指出,Apple使用Autolayout/Constraints來處理這種情況。而不是創建一個固定大小的對象,而是添加約束條件,對象將重新調整大小以適應屏幕大小。至於你的問題,你沒有記錄各種幀的輸出或告訴我們你的代碼在哪裏運行,所以我不能評論你是否正確編寫了你的​​代碼。 –

+0

嗨@RoboticCat謝謝你。我知道AutoLayout,但我只是嘗試沒有AL的代碼。無論AL與否,代碼仍然可以工作,而且確實如此。 –

回答

0

OK,試驗後,該代碼解決了這個問題:

UILabel *uiLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, screenWidth, 44)]; 

這樣的日子的教訓:

contentView.frame和contentView.layer.bounds DOES NOT得到正確的單元格大小從UITableViewCell。不知道爲什麼。

任何人都可以啓發我嗎?謝謝!

1

UITableViewCell會將Interface Builder中xib的寬度視爲原始寬度。如果你的xib是iPhone 5(即320×568),那麼UITableViewCell的寬度將被設置爲320px。如果IB中的xib是iPhone 6+(即414 x 736),則單元格的寬度將被設置爲414px。

爲了在所有設備中具有類似的觀看體驗,Apple建議使用Autolayout。

只給tableview的約束。設置tableview相對於superview的約束,UITableViewCell會自動調整設備的屏幕大小。也給你的UILabel提供約束。

否則,您需要將screenWidth作爲單元格的內容視圖和UILabel的寬度。

相關問題