UIPickerView宽度约束问题

时间:2018-10-30 19:01:27

标签: ios swift uikit

我需要将UIPickerView添加到UIAlertController。我使用代码:

let alertView = UIAlertController()
let pickerView = UIPickerView()
pickerView.translatesAutoresizingMaskIntoConstraints = false

alertView.view.addSubview(pickerView)
pickerView.topAnchor.constraint(equalTo: alertView.view.topAnchor, constant: 50).isActive = true
pickerView.bottomAnchor.constraint(equalTo: alertView.view.bottomAnchor, constant: -50).isActive = true
pickerView.centerXAnchor.constraint(equalTo: alertView.view.centerXAnchor).isActive = true
pickerView.widthAnchor.constraint(equalTo: alertView.view.widthAnchor).isActive = true

present(alertView, animated: true)

这是结果:

enter image description here

为什么UIPickerView的宽度大于UIAlertController?

我也尝试过:

pickerView.widthAnchor.constraint(equalTo: alertView.view.widthAnchor, multiplier: 0.5).isActive = true

但是得到了相同的结果...

1 个答案:

答案 0 :(得分:1)

当您给出正确正确的宽度约束时。问题是从您的侧面看图像下方,当您给出一个Alertal.view的宽度常数时,这是一个UIalertController的主视图。颜色视图颜色和PickerView颜色为红色。)

enter image description here

现在,我们显示实际的alerview主视图的一个子视图(上图为带有“确定”按钮的蓝色)。 用子视图代替主视图更改宽度约束,例如:-

为了更好地站立:-

for view in alertView.view.subviews {
        print(view)
       //just add color which is shown in bellow image.
        view.backgroundColor = UIColor.blue
    }

所以,解决方案就像:-

pickerView.widthAnchor.constraint(equalTo: alertView.view.subviews[0].widthAnchor).isActive = true

结果:-

enter image description here

希望这对您有所帮助, 谢谢