ios - 不同iphone的按钮位置不同

标签 ios autolayout storyboard

如何让所有不同版本的 iphone 的按钮保持在同一位置?我有一个背景图像,最重要的是,我有一个按钮。 This is for iPhone 6.

This one is for iphone 5.

无论如何我可以为按钮提供固定位置吗?

以下是它应该是什么样子,基于 Storyboard。 enter image description here

最佳答案

所有具有 4"、4.7"和 5.5"屏幕的 iOS 设备(从 iPhone 5 开始的所有 iPhone 和从第 5 代开始的所有 iPod)都具有相同的屏幕纵横比,16:9,所以如果这些是目标设备,这可以通过 Storyboard 中的约束并且没有代码来实现。

您发布了 iPhone 6 大小的屏幕截图。 (专业提示:在模拟器中按 ⌘S 将屏幕截图保存到桌面,这样您就不必尝试手动裁剪它。)在这张照片中,您将按钮的底部边缘放置了大约 300 像素= 屏幕底部边缘上方 150 点。 iPhone 6 的屏幕高度为 667 点。

所以第一步是在你的 Root View 中添加一个“间隔” View 。将其背景颜色设置为您可以看到的颜色,并将其隐藏。 (隐藏 View 仍然参与布局。)将垫片固定在 Root View 的左边缘和下边缘。使其宽 20 点。宽度其实并不重要。在垫片和 Root View 之间创建等高约束。然后编辑等高约束。将乘数设置为 150:667 (使用该字符串,Xcode 将为您进行除法)。它应该是这样的:

spacer configured

现在将按钮的底部边缘限制为等于垫片的顶部边缘:

button bottom constraint

我们可以使用助手编辑器中的预览模式查看按钮如何放置在不同的屏幕尺寸上:

previews

根据要求,该按钮“始终位于模糊的黄线之上”。

如果您还想支持 3.5 英寸屏幕,并且您将背景 ImageView 的模式设置为“Aspect Fit”(这将在图像的两侧留下空白)或“Scale To Fill”(这会将图像压扁)一点点),那么这个布局将按原样工作。

如果您还想支持 3.5 英寸屏幕并且使用不同裁剪的背景图像(例如,您使用“Aspect Fill”模式),则需要根据设备的屏幕尺寸在代码中替换垫片的高度约束。

关于ios - 不同iphone的按钮位置不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36708118/

相关文章:

iOS Storyboard - 有什么方法可以根据屏幕大小更改字体大小?

ios - *仅*从 UITextView 观察键盘通知?将 UITextView 传递给 "object"参数不起作用

ios - 使用 Parse 获取用户位置

ios - 平移 - 平移之前图像的初始位置

ios - 如何创建队列并手动启动它

ios - 在代码中调整布局后 UICollectionViewCell 更新约束

ios - 使用数据从 XIB 过渡到 Storyboard

ios - 使用百分比填充 UIView

ios - 为什么约束在 UITableView 滚动时更新?

objective-c - 意外的 NSAutoresizingMaskLayoutConstraint 从 Nib 添加 UIView 到自动布局 Storyboard场景