簡體   English   中英

以編程方式更改 UIPicker 高度

[英]change UIPicker height programmatically

我想以編程方式修改 UIPicker 的高度,我嘗試這樣做但是在模擬器上高度保持不變,我沒有看到任何變化。

@objc open func showPicker(title: String?, selected: String?, strings:[String], color: UIColor? = nil, completion:DPPickerValueIndexCompletion?) {
        self.pickerValues = strings
        
        let picker = UIPickerView()
        picker.delegate = self
        picker.dataSource = self
        
        
        picker.transform = CGAffineTransformMakeScale(0.5, 0.5)
        
        
        
        if let value = selected {
            picker.reloadAllComponents()
            if strings.count > 0 {
                OperationQueue.current?.addOperation {
                    let index = strings.firstIndex(of: value) ?? 0
                    picker.selectRow(index, inComponent: 0, animated: false)
                }
            }
        }

        self.showPicker(title: title, view: picker, color: color) { (cancel) in
            
            var index = -1
            var value: String? = nil
            
            if !cancel, strings.count > 0 {
                index = picker.selectedRow(inComponent: 0)
                if index >= 0 {
                    value = self.pickerValues?[index]
                }
            }
            
            completion?(value, index, cancel || index < 0)
        }
    }

我不明白為什么當您將自動調整大小掩碼轉換為約束時它不能正確調整自身大小,但是當您使用 AutoLayout 時它可以正常工作:

    let pickerView = UIPickerView()
    pickerView.translatesAutoresizingMaskIntoConstraints = false
    pickerView.delegate = self
    pickerView.dataSource = self

    view.addSubview(pickerView)
    NSLayoutConstraint.activate([
        pickerView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
        pickerView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
        pickerView.centerYAnchor.constraint(equalTo: view.centerYAnchor),
        pickerView.heightAnchor.constraint(equalToConstant: 500)
    ])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM