2016-01-28 5 views
1

Я пытаюсь ADAPTE размера моего UIPickerView, а содержание внутри, у меня есть размер высоты зрения сборщика:авторазмера/размера UIPickerView для каждого экрана размера

let pickerView = UIPickerView() 

    if DeviceType.IS_IPHONE_4_OR_LESS { 
     pickerView.frame=CGRectMake(0, 200, view.frame.width, 100) 
    } else if DeviceType.IS_IPHONE_5 { 
     pickerView.frame=CGRectMake(0, 200, view.frame.width, 200) 
    } else if DeviceType.IS_IPHONE_6 { 
     pickerView.frame=CGRectMake(0, 200, view.frame.width, 200) 
    } else if DeviceType.IS_IPHONE_6P { 
     pickerView.frame=CGRectMake(0, 200, view.frame.width, 250) 
    } else if UIDevice.currentDevice().userInterfaceIdiom == .Pad { 
     pickerView.frame=CGRectMake(0, 200, view.frame.width, 300) 
    } 

    //  pickerView.backgroundColor = .whiteColor() 

    pickerView.showsSelectionIndicator = true 
    pickerView.delegate = self 
    pickerView.dataSource = self 
    self.pickerView = pickerView 

enter image description here

Но теперь я хочу изменить размер содержимого внутри, высоту каждой строки, размер текста и сделать многострочный, если контент слишком длинный, но я не знаю, как это сделать.

Мой код:

@IBOutlet var tfProjet: UITextField! 
var pvProjetData = ["-Choisir-", "Rachat de crédits", "Renégociation de crédits"] 
override func viewDidLoad() { 

    super.viewDidLoad() 

    let pickerView = UIPickerView() 

    if DeviceType.IS_IPHONE_4_OR_LESS { 
     pickerView.frame=CGRectMake(0, 200, view.frame.width, 100) 
    } else if DeviceType.IS_IPHONE_5 { 
     pickerView.frame=CGRectMake(0, 200, view.frame.width, 200) 
    } else if DeviceType.IS_IPHONE_6 { 
     pickerView.frame=CGRectMake(0, 200, view.frame.width, 200) 
    } else if DeviceType.IS_IPHONE_6P { 
     pickerView.frame=CGRectMake(0, 200, view.frame.width, 250) 
    } else if UIDevice.currentDevice().userInterfaceIdiom == .Pad { 
     pickerView.frame=CGRectMake(0, 200, view.frame.width, 300) 
    } 

    //  pickerView.backgroundColor = .whiteColor() 

    pickerView.showsSelectionIndicator = true 
    pickerView.delegate = self 
    pickerView.dataSource = self 
    self.pickerView = pickerView 

    tfProjet.inputView = pickerView 
} 

func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int{ 
    return 1 
} 


func selectRow(row: Int, inComponent component: Int, animated: Bool){ 

} 

func updatePicker(){ 
    self.pickerView!.reloadAllComponents() 
    pickerView.selectRow(0, inComponent: 0, animated: false) 
} 

func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 

    if tfProjet.isFirstResponder(){ 
     return pvProjetData.count 
    } 
    return 1 
} 

func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 

    if tfProjet.isFirstResponder(){ 
     return pvProjetData[row] 
    } 
    return "" 
} 

func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 

    if tfProjet.isFirstResponder(){ 
     let itemselected = pvProjetData[row] 
     tfProjet.text = itemselected 
     self.tfProjet.endEditing(true) 
    } 
} 

ответ

0

Забудьте делать это с помощью кода, используйте autolayout. Auytolayout является независимым от устройства.

+0

Я использую код, потому что, если я помещаю в режим выбора, он показывает блок, но я ничего не вижу, когда вы нажимаете на изображение выбора. – Ben

+0

Более того, используйте stacklayout и просто установите скрытый атрибут в свой вид сборщика , Пример: https://dl.dropboxusercontent.com/u/50568393/pickerSample.zip –