如何使用情节提要约束将两个 UIPickerView 并排均匀分布?

Posted

技术标签:

【中文标题】如何使用情节提要约束将两个 UIPickerView 并排均匀分布?【英文标题】:How can I evenly space two UIPickerView side by side using storyboard constraints? 【发布时间】:2014-06-20 12:53:45 【问题描述】:

有没有办法使用storyboard 约束均匀地分隔两个UIPickerView?我正在制作一个应用程序,该应用程序在横向模式下的同一视图中并排有两个 UIPickerView(我从未在此应用程序中使用纵向模式)。所以我需要涵盖所有手机尺寸。

在 iPhone 4 中,第一个 UIPickerView 将从 x=0 变为 x=240,第二个 UIPickerView 将从 x=240 变为 x=480。如果用户要使用更大的屏幕分辨率(iPhone 5),我希望像这样具有相同的均匀间距。我怎样才能做到这一点?如果使用storyboard 不可行,我该如何编写代码?谢谢。

【问题讨论】:

你不能只使用一个UIPickerView 并在UIPickerViewDataSourcenumberOfComponentsInPickerView: 方法中返回2吗? 我希望在某些时候隐藏第二个 UIPickerView。我认为不可能隐藏可变数量的组件。据我所知,全有或全无。 这是可能的。在UIPickerView 上,您可以调用reloadAllComponents 方法并返回不同数量的组件。 【参考方案1】:

尝试使用如下图所示的以下约束:

【讨论】:

【参考方案2】:

我会编码(个人喜好)。

通过插座连接您的故事板选择器,然后在 self.viewDidLoad 中:

// get half the width of the view that holds the pickers
float theWidth = self.view.frame.size.width / 2;

// Adjust the firstPicker
self.firstPicker.frame = CGRectMake (0,0,theWidth,self.firstPicker.frame.size.height);

// Adjust the secondPicker
self.secondPicker.frame = CGRectMake (theWidth, 0, theWidth,self.secondPicker.frame.size.height);

就是这样 - 总是相同的大小和对齐,一半的视图持有它。为了方便起见,您可以继续在 Storyboard 中移动内容。

【讨论】:

这不起作用。此外,当我在所有手机分辨率上输出 theWidth 值时,它总是显示 160,所以这不起作用。行 self.secondPicker.frame = CGRectMake (theWidth, 0, self.secondPicker.frame.size.height);没有足够的参数(预计 4 个)。 我忘了为 secondPicker.frame 添加宽度 - 显然。我不知道您所说的“在所有手机分辨率上”是什么意思。它可以工作,我每天都在设置我的框架,一个适用于所有屏幕尺寸的代码。如果你旋转你的设备,你当然会想要更新框架。由于我在代码中而不是 IB 中添加我的选择器,因此您可能必须在 viewDidAppear 中调用框架。 好吧,我一定是做错了什么。感谢您的帮助,很高兴知道在代码中执行此操作的方法:) 我接受了另一个答案,因为问题是在情节提要中执行此操作,但我也非常感谢您的帮助。 不不没关系 - 请选择最适合您需求的!我发帖不是为了积分,只是想帮忙。请牢记代码,以备将来使用更多屏幕尺寸或动态更改应用程序窗口尺寸。

以上是关于如何使用情节提要约束将两个 UIPickerView 并排均匀分布?的主要内容,如果未能解决你的问题,请参考以下文章

如何仅使用一个情节提要为所有 iPhone 设备设计自动布局约束?

使用约束来定义高度减去带有情节提要的常数

如何在情节提要中正确创建覆盖视图?

如何为等间距按钮添加情节提要约束

XCODE:iPhone 12 的尺寸将如何影响约束和情节提要?

从情节提要设置约束后如何立即修改约束?