【问题标题】:autosize/resize UIPickerView for each screen sizes为每个屏幕尺寸自动调整/调整 UIPickerView 的大小
【发布时间】:2016-01-28 08:45:28
【问题描述】:

我正在尝试调整 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

但是现在我想调整里面的内容,每行的高度,文字的大小,如果内容太长就做多行,但是我不知道怎么做。

我的代码:

@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)
    }
}

【问题讨论】:

    标签: ios swift resize uipickerview size-classes


    【解决方案1】:

    忘记通过代码执行此操作,使用自动布局。自动布局与设备无关。

    【讨论】:

    • 我正在使用代码,因为如果我放置一个选择器视图,它会显示一个块,但是当你点击一个选择器视图时我不会看到任何东西
    • 此外,使用 stacklayout 并将 hidden 属性设置为您的选择器视图。示例:dl.dropboxusercontent.com/u/50568393/pickerSample.zip
    猜你喜欢
    • 1970-01-01
    • 2012-12-28
    • 2012-01-27
    • 1970-01-01
    • 2020-11-16
    • 1970-01-01
    • 2021-10-29
    • 2019-03-12
    • 2021-05-07
    相关资源
    最近更新 更多