我有一个带有.xib的自定义UITableViewCell。在xib中,我将单元格宽度设置为320。
我想在单元格中相对于单元格宽度放置UIlabel。但是,在运行期间的代码中,单元格的Bounds.width总是320,如xib中所设置的,而不是我需要正确定位UILabel的屏幕/ UITableView的实际宽度。
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 :(得分:1)
单元格的tableview总是宽度为320,表示表格没有响应屏幕大小。您需要做的是检查表视图的自动布局约束是否设置正确(如果您正在使用自动布局),或者是否为每个屏幕大小设置不同的表视图框架。
答案 1 :(得分:0)
Bounds.Width
iPhone 4S& 5,375为iPhone 6和414为iPhone 6 +。
你看到宽度为320的事实,让我相信你的应用程序还不支持更高密度的屏幕,并将扩大320。你可以看出,状态栏(顶部的时间)会略大一些。
为每个设备尺寸设置相应的启动图像,并且所有设备都将以原始分辨率运行。
您需要按以下分辨率设置启动图像:
Default-667h@2x.png for iPhone 6; dimensions 750x1334
Default-736h@3x.png for iPhone 6 Plus; dimensions 1242x2208
答案 2 :(得分:0)
尝试使用layoutSubviews
方法获取宽度。
override func layoutSubviews() {
super.layoutSubviews()
NSLog("self.frame.size is %@", NSStringFromCGSize(self.frame.size))
}
下面的是我的输出
2015-07-21 10:10:34.942 MyApp [74669:1208599] self.frame.size是{768,310}