【问题标题】:UIPickerView ignoring contraintsUIPickerView 忽略约束
【发布时间】:2015-11-09 02:05:17
【问题描述】:

我的应用中有一个具有 UIPickerView 的视图。委托和数据源已设置,选择器正确加载数据,但是,它完全忽略故事板约束并转移到视图顶部,无论我尝试了什么。

下面的屏幕截图显示了故事板中的对齐方式(选择器与蓝色视图垂直/水平居中对齐(所有边的约束为 30)以及应用在 6S 上运行时的对齐方式。

知道我做错了什么吗?

【问题讨论】:

  • 尝试在 UIPicker 上设置高度和宽度约束。有时它还有助于设置背景颜色以更好地了解正在发生的事情
  • @nanako 我给了它一个深蓝色的背景和 100x100 的大小,见上面添加的照片。感谢您的帮助!
  • 你能显示链接到 UIPicker 的 @IBOutlet 代码吗?您是否在代码中的任何位置为 pickerView 设置了框架?
  • @Tim 我没有以编程方式修改 UI 的任何部分,这就是我为选择器所拥有的全部内容:@property (weak, nonatomic) IBOutlet UIPickerView *mouthpiecePicker;self.mouthpiecePicker.delegate = self; self.mouthpiecePicker.dataSource = self; [self.view addSubview:self.mouthpiecePicker];

标签: ios objective-c uipickerview xcode-storyboard


【解决方案1】:

UIPickerView 有一个复杂的 setFrame 实现:-它只允许以少数几种尺寸呈现自己。控制/克服这一点的最简单方法是将其放在容器视图中并将约束应用于该视图。您可以覆盖该 containerView 中的 layoutSubviews 以使选择器居中,甚至可以应用转换来缩放它。不要尝试在此代码中设置选择器视图的大小,只需查询(获取)它,然后围绕该值进行计算。

【讨论】:

  • 太棒了,谢谢!在我继续设计该视图时,我会考虑所有这些。
【解决方案2】:

Remove [self.view addSubview:self.mouthpiecePicker]; 这是重新添加选择器视图,但它已经与 Storyboard 一起添加。当您重新添加它时,它会删除所有约束。

【讨论】:

  • 实际上重新添加视图并没有改变它的框架属性,但它消除了所有约束......
  • @Tim 刚刚意识到我从未对此作出回应。感谢您的解决方案!
猜你喜欢
  • 2016-11-04
  • 2015-01-02
  • 1970-01-01
  • 2016-12-29
  • 2016-02-04
  • 2010-10-17
  • 2012-01-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多