2017-01-22 2 views
0

У меня есть UIPickerView, который простирается до ведущего вида и заднего вида в autolayout в storyboards.Динамически настраивать значение UILabel x на основе местоположения UIPicker?

Я хотел бы добавить 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):

enter image description here

есть ли лучший способ сделать это? как?

ответ

1

Что, вероятно, происходит, когда вы вызываете self.view.frame.width, правильная ширина обзора еще не рассчитана. Он может иметь правильную ширину для iPhone 5/SE, если это было использовано в Interface Builder. Это может произойти, если вы вызываете код, который нуждается в ширине в -viewDidLoad, поскольку представление загружено, но его конечный размер не был рассчитан. Поскольку вы работаете с фреймами, попробуйте установить его в viewWillLayoutSubviews или viewDidLayoutSubviews.

Смежные вопросы