iOS自适应 View ;自适应约束?

标签 ios objective-c iphone constraints

我想要实现的是基于布局中 4.7"屏幕的 iPhone 的自适应 View 。

现在实现这一点很困难,这也是我第一次遇到约束。

我不想使用自由格式,因为它对我来说太陌生了,而且我的目标不是 iPad。

此外,由于某些原因,我目前正在进行的项目不允许我切换到自由形式的 View Controller 大小。

iPhone 4 based on 4.7" layout without constraints iPhone 4 based on 4.7" with constraints top/bottom iPhone 6 based on 4.7" with constraints

首先是iphone 4,没有基于4.7"布局的限制 第二个是基于 4.7"布局的 iPhone 4 第三个是 iphone 6 布局显示的样子。

我想保持相同的一般距离,但理想情况下缩小所有内容以匹配较小的屏幕尺寸。 (距离明智,而不是按钮/文字大小等)

所以你可以看到我无论如何都取得了结果,但是我的顶部标签是从顶部测量的,按钮是从底部测量的,我尝试的任何其他操作似乎都会将其余按钮推到视野之外。

但是,我怎样才能以编程方式实现这一点

if (iphone screen is 4.7") {
    bottom constraint is 95px.height;
} else
if (iphone screen is 4.0") {    
    bottom constraint is 50px.height;
} else
if (iphone screen is 3.5") {
    bottom constraint is 10px.height;
}

这就是我计划使我的应用程序具有自适应性的方式,但我也需要约束具有自适应性。如果我做错了,请指出正确的方向。

最佳答案

您可以通过多种方式来解决这个问题。一种方法是使用约束的乘数和常数来为这些屏幕尺寸提供正确的间距。如果你解出这两个方程,

480x + y = 470(480 - 您想要的底部约束为 10)和

667x + y = 572(667 - 您想要的底部约束为 95)

您得到的 x 值为 0.5455,y 值为 208.2。如果将它们代入另一个方程 (568x + y = 518),结果也非常接近。因此,对于底部约束,您需要

按钮底部 = super View 底部 * 0.5455 + 208.2

您可以在 IB 中通过向底部按钮(或标签)添加底部约束并编辑它来更改乘数和常数值来实现此目的。您可以对顶 View 执行相同的操作,使其与屏幕尺寸成比例,但请注意,您实际上需要对 super View 的底部进行约束,因为 superview.top 的值为 0,因此使用乘数将对你没有好处。要均匀地间隔所有 View ,最好的方法是使用间隔 View (如果您在 SO 上搜索“均匀间隔 View ”,您会找到一些解释这一点的答案)。

执行此操作的另一种方法可能是使用表格 View 而不是单独的标签和按钮。这种方法的优点是 View (在本例中为单元格)将自动均匀间隔(基于行高)。您仍然可以像上面概述的那样将 TableView 约束到顶部和底部,或者只是将其垂直居中,并使其高度与 super View 的高度成比例。我认为这可能是更好、而且更简单的方法。如果您使表格 View 不滚动,并且没有单元格分隔符,它看起来就像其他方法一样。

关于iOS自适应 View ;自适应约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28386323/

相关文章:

ios - 从单元格附件按钮显示弹出窗口?

iphone - 如何在我的 iPhone 应用程序中为这个自定义 View 过渡设置动画?

ios - NSLog 会减慢我的应用程序吗?

ios - 如何清除 WKWebView 的 WKBackForwardList?

iphone - 在 IOS 上的单个 ScrollView 中对两个 ImageView 进行双指缩放

ios - 在 iOS 模拟器中测试 iPhone 相机?

ios - 如何从包含其他文本参数的字典上传图像?

objective-c - iPad 的基于 ARC 的项目中内存不足访问崩溃报告

iphone - 如何在没有分隔符的情况下分割字符串?

ios - 无法在 IOS 中创建快照