【问题标题】:How to limit the number of rows displayed in a picker view?如何限制选择器视图中显示的行数?
【发布时间】:2021-05-23 20:31:30
【问题描述】:

UIPickerView 默认显示 7 行(1 行,6 行非活动),包括垂直填充在内,高度约为 210 像素。

如何仅显示 2 个非活动项(活动项上方 1 个,活动项下方 1 个)以限制选取器的高度?

我可以使用UIPickerViewDataSource 扩展来定义行和列的总数。我需要限制非活动行数以降低元素高度和屏幕的整体视觉复杂性。

【问题讨论】:

    标签: swift xcode storyboard


    【解决方案1】:

    你可以设置UIPickerView的高度,所以它只显示3个元素。我准备了一个简单的演示,我们将UIPickerView 的高度设置为一个常数,并使用UIPickerViewDelegaterowHeightForComponent 函数将行高设置为UIPickerView 的高度除以所需的行数。

    class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {
        private let pickerViewHeight: CGFloat = 150
        private let numberOfVisibleRows: CGFloat = 3 
        override func viewDidLoad() {
            super.viewDidLoad()
    
            let picker = UIPickerView()
            picker.translatesAutoresizingMaskIntoConstraints = false
            view.addSubview(picker)
    
            picker.dataSource = self
            picker.delegate = self
    
            picker.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor).isActive = true
            picker.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor).isActive = true
            picker.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor).isActive = true
            picker.heightAnchor.constraint(equalToConstant: pickerViewHeight).isActive = true
        }
    
        func numberOfComponents(in pickerView: UIPickerView) -> Int {
            return 1
        }
    
        func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
            return 10
        }
    
        func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
                return "Row \(row)"
        }
    
        func pickerView(_ pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat {
            return pickerViewHeight / numberOfVisibleRows
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-11-11
      • 2018-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-30
      • 1970-01-01
      相关资源
      最近更新 更多