2015-04-30 163 views
0

我有一個自定義UITableViewCell與.xib。在xib中,我已將單元格寬度設置爲320.自定義UITableViewCell寬度問題

我想在單元格內相對於單元格寬度定位UIlabel。但是,在運行時的代碼中,單元格的Bounds.width總是320,如在xib中設置的,而不是屏幕/ UITableView的實際寬度,我需要正確定位UILabel。

顯然,至少在運行期間,iPhone 5,6和6+的寬度應該不同,但在所有設備上始終設置爲320。我錯過了什麼?

謝謝!

編輯

這是一小段代碼。

var newFrame = _lblDetail.Frame; 
newFrame.X = Bounds.Width - 55; //get current width of cell, and subtract 55 and set that as the X value of the frame for the label 
_lblDetail.Frame = newFrame; //set new frame on label 
+0

沒有符合你檢查表視圖的寬度?它也是320嗎?你能否添加一些代碼或相關的截圖? –

+0

是的,tableview的寬度也是320.添加了一些代碼 – Corstiaan

回答

1

單元格的tableview始終具有320的寬度,表示表格不響應屏幕大小。然後你需要做的是檢查表格視圖的自動佈局約束是否設置正確(如果你使用的是自動佈局)或者表格視圖的框架是否針對每個屏幕大小設置不同。

+0

這是不正確的,表格單元格的寬度將匹配窗口的寬度,這增加了每個設備的寬度爲414 iPhone 6+的http ://www.idev101.com/code/User_Interface/sizes.html –

0
Bounds.Width 

將是320,用於在iPhone 4S & 5,375爲iPhone 6和414的iPhone 6+。

您看到320爲寬度的事實,使我相信您的應用程序不支持更高密度的屏幕,並將縮放320。你可以告訴狀態欄(頂部的時間)會稍微大些。

爲每個設備尺寸設置相應的啓動圖像,並且您的所有設備都將以每臺設備的原始分辨率運行。

您需要在以下分辨率設置啓動圖像:

[email protected] for iPhone 6; dimensions 750x1334 
[email protected] for iPhone 6 Plus; dimensions 1242x2208 
0

嘗試在layoutSubviews方法得到的寬度。

override func layoutSubviews() { 
    super.layoutSubviews() 

    NSLog("self.frame.size is %@", NSStringFromCGSize(self.frame.size)) 
} 
下面

是我的輸出

2015年7月21日10:10:3​​4.942 MyApp的[74669:1208599] self.frame.size是{768,310}