2017-01-22 5 views
0

나는 autolayout에 앞뒤로 뻗어있는 UIPickerViewstoryboards에 있습니다.UIPicker 위치를 기반으로 UILabel x 값을 동적으로 조정 하시겠습니까?

의 각 섹션 옆에 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는 잘 보이는 반면 6 UI에 대한이 (그래서 나타나도 불구하고 iPhone SEiPhone 6에 대해 동일한 폭을보고 SE를, 5)에 :

enter image description here

이 할 수있는 더 좋은 방법이 있나요? 방법?

답변

1

아마도 self.view.frame.width이라고 할 때 일어나는 일은 정확한 너비가 아직 계산되지 않은 것입니다. 인터페이스 빌더에서 사용 된 경우 iPhone 5/SE에 맞는 폭을 가질 수 있습니다. 뷰가로드되었지만 최종 크기가 계산되지 않았기 때문에 너비가 -viewDidLoad 인 코드를 호출하는 경우이 문제가 발생할 수 있습니다. 프레임 작업 중이므로 viewWillLayoutSubviews 또는 viewDidLayoutSubviews으로 설정하십시오.