【问题标题】:Dynamically adjust UILabel x-value based on UIPicker location?根据 UIPicker 位置动态调整 UILabel x 值?
【发布时间】:2017-01-22 23:09:42
【问题描述】:

我有一个UIPickerView,它延伸到autolayoutstoryboards 中的前视图和尾视图。

我想在UIPickerView 的每个部分旁边添加一个UILabel,使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 SEiPhone 6 的宽度相同,即使 6 UI 显示为这样(而在 SE 和 5 上看起来很好):

有没有更好的方法来做到这一点?如何?

【问题讨论】:

    标签: ios swift autolayout uilabel uipickerview


    【解决方案1】:

    可能发生的情况是,当您调用self.view.frame.width 时,尚未计算出正确的视图宽度。如果在 Interface Builder 中使用,它可能具有适合 iPhone 5/SE 的正确宽度。如果您调用的代码在加载视图后需要 -viewDidLoad 中的宽度,但尚未计算其最终大小,则可能会发生这种情况。由于您正在使用框架,请尝试将其设置为 viewWillLayoutSubviewsviewDidLayoutSubviews

    【讨论】:

      猜你喜欢
      • 2018-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-26
      • 2012-03-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多