我有UIPickerView
延伸到autolayout
storyboards
中的前导视图和尾随视图。
我想在UILabel
的每个部分旁边添加一个UIPickerView
,该部分与选择器部分保持10 px
不变。
现在我试图以编程方式这样做:
var hourXVal = pickerWidth - 330.0
var minXVal = pickerWidth - 190.0
var secXVal = pickerWidth - 50.0
if(self.view.frame.width == 320)
{
hourXVal = pickerWidth - 250.0
minXVal = pickerWidth - 140.0
secXVal = pickerWidth - 35.0
}
else if(self.view.frame.width == 414)
{
hourXVal = pickerWidth - 330.0
minXVal = pickerWidth - 190.0
secXVal = pickerWidth - 50.0
}
let hourLabel = UILabel(frame: CGRect(x:hourXVal, y:88, width: 100, height:40))
let minuteLabel = UILabel(frame: CGRect(x:minXVal, y:88, width: 100, height:40))
let secondLabel = UILabel(frame: CGRect(x:secXVal, y:88, width: 100, height:40))
hourLabel.text = "Hours"
minuteLabel.text = "Minutes"
secondLabel.text = "Sec"
self.timePickerView.addSubview(hourLabel)
self.timePickerView.addSubview(minuteLabel)
self.timePickerView.addSubview(secondLabel)
但是,self.view.frame.width
报告iPhone SE
和iPhone 6
的宽度相同,即使6个UI显示为(但SE和5看起来很好):< / p>
有更好的方法吗?怎么样?
答案 0 :(得分:1)
可能发生的事情是,当您致电self.view.frame.width
时,尚未计算正确的视图宽度。如果在Interface Builder中使用它,它可以具有正确的iPhone 5 / SE宽度。如果您在加载视图时调用需要-viewDidLoad
宽度的代码,但是它的最终大小尚未计算,则会发生这种情况。由于您正在使用框架,请尝试在viewWillLayoutSubviews
或viewDidLayoutSubviews
中进行设置。