Ios 如何调整文本大小而不显示。。。在UIPickerView?

Ios 如何调整文本大小而不显示。。。在UIPickerView?,ios,swift,uipickerview,Ios,Swift,Uipickerview,我用了3个PickerView,有几个词很大,不适合PickerView,看起来像这样“IamAWordVer…”,我不希望这种情况发生。我希望它调整字体大小或类似的东西来适应PickerView中的所有单词,但我不想影响PickerView的大小或其他picker视图的字体大小,包括发生在这个PickerView中的单词 例如,所有单词都使用默认值,如果不适合,请调整大小以适合所有单词 func pickerView(pickerView: UIPickerView, viewForRow r

我用了3个PickerView,有几个词很大,不适合PickerView,看起来像这样“IamAWordVer…”,我不希望这种情况发生。我希望它调整字体大小或类似的东西来适应PickerView中的所有单词,但我不想影响PickerView的大小或其他picker视图的字体大小,包括发生在这个PickerView中的单词

例如,所有单词都使用默认值,如果不适合,请调整大小以适合所有单词

func pickerView(pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusingView view: UIView?) -> UIView {
    let pickerLabel = UILabel()

    if pickerView == pvOne{
        pickerLabel.adjustsFontSizeToFitWidth = true
        pickerLabel.attributedText = oneText[row] as? NSAttributedString
    }
    else if(pickerView == pvTwo){
        pickerLabel.adjustsFontSizeToFitWidth = true
        pickerLabel.attributedText = twoText[row] as? NSAttributedString
    }
    else if(pickerView == pvThree){
        pickerLabel.adjustsFontSizeToFitWidth = true
        pickerLabel.attributedText = threeText[row] as? NSAttributedString
    }
    return pickerLabel
}

它现在显示全部为空

使用
nameOfLabel.adjustsFontSizeToFitWidth=true

我这样解决:

func pickerView(pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusingView view: UIView?) -> UIView {
    let pickerLabel = UILabel()


    if pickerView == pvOne{
        pickerLabel.adjustsFontSizeToFitWidth = true
        let titleData = oneText[row]
        let myTitle = NSAttributedString(string: titleData as! String, attributes: [NSFontAttributeName:UIFont(name: "Georgia", size: 20.0)!,NSForegroundColorAttributeName:UIColor.blackColor()])
        pickerLabel.attributedText = myTitle

    }
    else if(pickerView == pvTwo){
        pickerLabel.adjustsFontSizeToFitWidth = true
        let titleData = twoText[row]
        let myTitle = NSAttributedString(string: titleData as! String, attributes: [NSFontAttributeName:UIFont(name: "Georgia", size: 20.0)!,NSForegroundColorAttributeName:UIColor.blackColor()])
        pickerLabel.attributedText = myTitle
    }
    else if(pickerView == pvThree){
        pickerLabel.adjustsFontSizeToFitWidth = true
        let titleData = threeText[row]
        let myTitle = NSAttributedString(string: titleData as! String, attributes: [NSFontAttributeName:UIFont(name: "Georgia", size: 20.0)!,NSForegroundColorAttributeName:UIColor.blackColor()])
        pickerLabel.attributedText = myTitle
    }
    return pickerLabel
}

您正在将字符串强制转换为NSAttributedString

尝试:


是的,假设他们正在使用
pickerView:viewForRow:forComponent:reusingView:
delegate方法并传递一个标签。我正在这个
func pickerView中尝试这样做(pickerView:UIPickerView,viewForRow:Int,forComponent:Int,reusingView:UIView?)->UIView
但是我不知道我在哪里使用了我试图在里面使用的标签的名称
让pickerLabel=UILabel()
但是这是一个新的更新你的问题,你的
pickerView:viewForRow:forComponent:reusingView:
方法。更新了,我想这就是你问的。剩下的代码呢?您发布的内容只返回一个空标签。您在发布问题之前是否使用了此方法?您在哪里声明pvOne、PVTOW等
func pickerView(pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusingView view: UIView?) -> UIView {
    let pickerLabel = UILabel()

    if pickerView == pvOne{
        pickerLabel.adjustsFontSizeToFitWidth = true
        pickerLabel.text = oneText[row]
    }
    else if(pickerView == pvTwo){
        pickerLabel.adjustsFontSizeToFitWidth = true
        pickerLabel.text = twoText[row]
    }
    else if(pickerView == pvThree){
        pickerLabel.adjustsFontSizeToFitWidth = true
        pickerLabel.text = threeText[row]
    }
    return pickerLabel
}