Ios 使UIPickerView宽度填充视图

Ios 使UIPickerView宽度填充视图,ios,swift,uipickerview,Ios,Swift,Uipickerview,我是iOS开发新手,遇到了一个图形问题: 我创建了一个显示在谷歌地图视图上方的UIPickerView。我希望选取器视图宽度与主视图宽度匹配。 当前,选择器始终占据视图的3/4,并位于左上角: 我尝试这样做: func pickerView(pickerView: UIPickerView, widthForComponent component: Int) -> CGFloat { return self.view.bounds.width } 但结果是: 以下是我想要的:

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

我尝试这样做:

func pickerView(pickerView: UIPickerView, widthForComponent component: Int) -> CGFloat {
    return self.view.bounds.width
}
但结果是:

以下是我想要的:
有什么想法吗?是否可以在情节提要而不是swift中设置此选项?

您可以为uipickerview创建约束。选择选择器视图并设置以下约束。可以在情节提要中设置约束

尾随空格:0 前导空格:0 波顿空间:0


您的问题不是组件的宽度,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)
}

我尝试将pin按钮的约束添加到uipickerview。它不会更改任何内容设置与主视图对应的约束。首先单击选取器视图,然后单击“锁定”按钮,删除“约束到边距”中的复选标记,并将三个边的约束设置为零。(不要将约束设置为“依赖于顶部”),这应该很容易,但我肯定会出错。下面是一些快照,我按照你说的做了,但它不起作用:不需要设置顶部约束。首先,要将选择器视图拖动到视图控制器中。并排列到屏幕底部,仅设置三个侧面约束。无需在顶部设置约束。只需检查此链接:实际上我希望它显示在视图的顶部。可能与下面的地图有冲突,因为即使在屏幕快照上设置了约束,我也无法在视图底部显示选择器对不起,自动布局约束在哪里?我到处检查,除了对应最大宽度的600之外,没有固定值。故事板的宽度和高度设置为“任意”。您介意拍摄约束的快照吗?它们在这张图片上是打开的,我还发现,我认为最大宽度为600的限制是主要问题,因为它看起来像是在横向模式下,所以视图宽度会比快照在纵向模式下的宽度高,但应用程序可以在横向模式下旋转,所以我不能硬编码宽度,对吗?下面是3个约束的两个快照:左0、右0和pischer.top=layout.bottom啊,你能给我发一张该约束右边选项卡的图片吗,我不确定你的约束是否设置好了!