使UIPickerView宽度填充视图

时间:2016-04-06 13:23:28

标签: ios swift uipickerview

我是iOS开发的新手,我遇到了图形问题: 我创建了一个显示在谷歌地图视图上方的UIPickerView。我想让选择器视图宽度与主视图宽度相匹配。 目前,拾取器总是占据视图的3/4并且位于左上角:

the picker is not center and does not fill the view

我试着这样做:

IE11

但结果如下: The text inside picker is center but the picker does not fill the view

这就是我想要的: My goal 任何的想法?是否可以在故​​事板中设置它而不是快速设置?

2 个答案:

答案 0 :(得分:2)

您可以为uipickerview创建约束。选择选择器视图并设置以下约束。您可以在故事板中设置约束。

尾随空格:0 领先空间:0 波顿空间:0

https://www.raywenderlich.com/115444/auto-layout-tutorial-in-ios-9-part-2-constraints

答案 1 :(得分:1)

你的问题不是组件的宽度,self.view.bounds.width已经修复了,你有一个布局问题。

检查拾取器视图的自动布局约束,如果使用Xcode自动设置约束,则可能具有固定值宽度或高度约束。

如果您以编程方式添加了pickerView,请检查您的框架是否与视图具有相同的宽度,或者约束是否正确(请参阅Sharat的回答)

编辑:代码以编程方式设置pickerView宽度 -

//call this in viewDidLoad
func resizePickerViewToScreenWidth(){
     let oldFrame = airspacePicker.frame
     var newFrame = oldFrame
     newFrame.size.width = view.frame.size.width
     airspacePicker.frame = newFrame
}

编辑2:代码以编程方式创建pickerView

var airspacePicker: UIPickerView!

override func viewDidLoad() {
    super.viewDidLoad()
    createPickerView()
}

func createPickerView() {
    airspacePicker = UIPickerView(frame: CGRect(origin: CGPointZero, size: CGSize(width: view.frame.width, height: 220.0)))
    airspacePicker.backgroundColor = UIColor.blackColor()
    airspacePicker.autoresizingMask = .FlexibleWidth
    view.addSubview(airspacePicker)
}