Ios 水平左右约束

Ios 水平左右约束,ios,autolayout,interface-builder,constraints,nslayoutconstraint,Ios,Autolayout,Interface Builder,Constraints,Nslayoutconstraint,我不明白如何将左右水平约束结合在一起。。我仍然不了解interface builder之外的确切机制、其约束条件以及模拟器上的有效结果: 我希望标签“Ingrediti”位于视图的中心(与上面的输入文本一样,具有相同类型的约束)。。为什么在模拟预览中它会超出我的“屏幕” 必须从标签中删除左右约束,然后添加“水平居中到superview”约束 必须从标签中删除左右约束,然后添加“水平居中到superview”约束 前导约束或尾随约束(即您设置的约束)在视图的左边缘和与之关联的任何对象之间设置固定

我不明白如何将左右水平约束结合在一起。。我仍然不了解interface builder之外的确切机制、其约束条件以及模拟器上的有效结果:


我希望标签“Ingrediti”位于视图的中心(与上面的输入文本一样,具有相同类型的约束)。。为什么在模拟预览中它会超出我的“屏幕”

必须从标签中删除左右约束,然后添加“水平居中到superview”约束


必须从标签中删除左右约束,然后添加“水平居中到superview”约束


前导约束或尾随约束(即您设置的约束)在视图的左边缘和与之关联的任何对象之间设置固定距离

在新的通用故事板和Xcode中的xib文件中,视图控制器的默认模拟大小为600x600。但目前的设备实际上都没有这种尺寸

因此,如果您的标签具有100个宽度,那么为了使用左和右约束(使用模拟的界面生成器宽度600)“居中”,我们将创建250个左约束和250个右约束(250+100+250=600)

但同样,没有一个实际的设备具有这样的宽度。因此,如果我们在iPhone 6上运行你的应用程序,它的宽度将转换为375“点”。如果我们在iPhone4S或iPhone5/5s上运行它,它的宽度可以转换为320点

因此,我们的100点宽标签是约束,距离父视图左边缘的恒定距离为250点。250 + 100 = 350. 但iPhone5的宽度只有320点,因此部分标签会出现在屏幕边缘,而右约束被打破,因为左约束和右约束无法同时满足(当你运行应用程序时,你的日志中可能会有一大堆关于这一点的警告信息)


如果希望标签居中,则必须创建水平中心约束(如所示)。

前导约束或尾随约束(这是您设置的)在视图的左边缘和与之关联的任何对象之间设置固定距离

在新的通用故事板和Xcode中的xib文件中,视图控制器的默认模拟大小为600x600。但目前的设备实际上都没有这种尺寸

因此,如果您的标签具有100个宽度,那么为了使用左和右约束(使用模拟的界面生成器宽度600)“居中”,我们将创建250个左约束和250个右约束(250+100+250=600)

但同样,没有一个实际的设备具有这样的宽度。因此,如果我们在iPhone 6上运行你的应用程序,它的宽度将转换为375“点”。如果我们在iPhone4S或iPhone5/5s上运行它,它的宽度可以转换为320点

因此,我们的100点宽标签是约束,距离父视图左边缘的恒定距离为250点。250 + 100 = 350. 但iPhone5的宽度只有320点,因此部分标签会出现在屏幕边缘,而右约束被打破,因为左约束和右约束无法同时满足(当你运行应用程序时,你的日志中可能会有一大堆关于这一点的警告信息)


如果我们希望标签居中,我们必须创建水平中心约束(如所示)。

谢谢您的回答!但我不明白为什么…在左右约束下,我不会得到相同的结果吗?谢谢你的回答!但我不明白为什么……有了左右约束,我不会得到相同的结果吗?@volperossa当你实际运行应用程序时,警告会出现在日志中(其中显示
NSLog
语句)。从问题中的屏幕截图来看,您看到的并不是实际运行应用程序的结果。是的,只是在助理编辑的预览屏幕中。。NSLog中的警告与IB(当我点击黄色三角形时的警告)不一样吗?@volperossa不,不是在all@volperossa当您实际运行应用程序时,警告将出现在日志中(其中显示
NSLog
语句)。从问题中的屏幕截图来看,您看到的并不是实际运行应用程序的结果。是的,只是在助理编辑的预览屏幕中。。NSLog中的警告与IB(单击黄色三角形时的警告)不一样吗?@volperossa不,一点也不一样