2015-04-30 107 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}