ios - PickerView字体大小相应改变iOS Swift

标签 ios swift uipickerview

should look like this 在 pickerView 中,我想更改标题字体大小,当我滚动时,所选行标题字体将具有高字体大小,上方所选标题字体大小将减小,下方所选行的字体大小相同。

 import UIKit

VC:

class ViewController: UIViewController {
    @IBOutlet weak var pickerView: UIPickerView!
    var pickerTitle = ["10:00","10:00","10:00","10:00","10:00","10:00","10:00","10:00","10:00","10:00","10:00","10:00","10:00","10:00","10:00","10:00","10:00","10:00","10:00","10:00","10:00","10:00","10:00","10:00"]. // time to display in pickerView

var fontSize = [4,6,8,10,12,14,16,18,20,22,24,26,24,22,20,18,16,14,12,10,8,6,4,2] // font size when view is loaded and when I scroll I need to change the font size so this won't work I guess
override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.
    pickerView.delegate = self
    pickerView.dataSource = self

    pickerView.reloadAllComponents()
    pickerView.selectRow(11, inComponent: 0, animated: true)
}
}

pickerView 的数据源和删除:

 extension ViewController: UIPickerViewDelegate,UIPickerViewDataSource {
func numberOfComponents(in pickerView: UIPickerView) -> Int {
    return 1
}

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    return pickerTitle.count
}


func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {
    let pickerLabel = UILabel()
    let titleData = pickerTitle[row]

    let myTitle = NSAttributedString(string: titleData, attributes: [NSAttributedString.Key.font:UIFont(name: "Georgia", size: CGFloat(fontSize[row]))!,NSAttributedString.Key.foregroundColor:UIColor.black])
    pickerLabel.attributedText = myTitle

    pickerLabel.textAlignment = .right
        return pickerLabel
}

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    for var i in 0...row{
        print(i)
    }

    for var i in row..<pickerTitle.count{
        print(i)
    }
    pickerView.reloadAllComponents()
}   
}

最佳答案

不确定您的要求是什么,以及您在代码中做什么。 但我能理解的是,您希望在 pickerView 中选定的标题增加字体大小,而其余未选定的标题保持较小;那么这里是代码: (如果不是,请进一步说明)

extension ViewController: UIPickerViewDelegate,UIPickerViewDataSource {

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

    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return pickerTitle.count
    }

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        pickerView.reloadAllComponents()
    }

    func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {

        var label = view as! UILabel?
        if label == nil {
            label = UILabel()
            label?.textAlignment = .center
        }
        switch component {
        case 0:

            label?.text = pickerTitle[row]
            if(pickerView.selectedRow(inComponent: 0) == row){
                label?.font = UIFont(name: "Georgia", size: 26)
            }
            return label!

        default:
            return label!
        }

    }
}

关于ios - PickerView字体大小相应改变iOS Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58621311/

相关文章:

ios - 如果忘记密码,如何恢复 .pem 文件

ios - 使用表格单元格内的按钮从原型(prototype)单元格传递数据

ios - 从 CloudKit 检索数据时遇到问题

swift - 带有固定行标题的 Swift 中的 UIPickerView

android - iOS 上的 CSS 与 Android 上的不同吗?

ios - 在没有 iOS 13 的情况下使用 Xcode 在 iOS 13 设备上运行

android - 是否可以实现从网站到 native 应用程序的深度链接?

ios - 如何在 swift 中添加位置图标?

objective-c - 根据匹配来自 coredata 的字符串选择 UIPickerview

ios - UIPickerView 中组件高度和宽度的默认值