Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS/XCode自动布局问题。更简单的方法?_Ios_Iphone_Xcode_Layout_Constraints - Fatal编程技术网

iOS/XCode自动布局问题。更简单的方法?

iOS/XCode自动布局问题。更简单的方法?,ios,iphone,xcode,layout,constraints,Ios,Iphone,Xcode,Layout,Constraints,我想知道xCode自动布局/约束是否真的像我想的那样令人沮丧,或者我只是不理解它们。例如,我从视图控制器中的这个基本标签开始: 很公平。文本框的左/右边距相等,顶部边距较小。现在,当我运行任何大小的设备时,都会从设备视图中扭曲/切断。因此,出于某种原因,Xcode立即认为,尽管我将整个标签放在视图控制器中,但它应该显示在屏幕的一半。不明白,但好的,所以我继续,并添加了自动布局建设的权利,左侧和顶部的边缘。结果是: 所以它居中,这很好,但现在它忽略了一个事实,我把宽度调大了,它只是缩小了它?对

我想知道xCode自动布局/约束是否真的像我想的那样令人沮丧,或者我只是不理解它们。例如,我从视图控制器中的这个基本标签开始:

很公平。文本框的左/右边距相等,顶部边距较小。现在,当我运行任何大小的设备时,都会从设备视图中扭曲/切断。因此,出于某种原因,Xcode立即认为,尽管我将整个标签放在视图控制器中,但它应该显示在屏幕的一半。不明白,但好的,所以我继续,并添加了自动布局建设的权利,左侧和顶部的边缘。结果是:

所以它居中,这很好,但现在它忽略了一个事实,我把宽度调大了,它只是缩小了它?对于如此简单的事情,这似乎是非常…不可靠的。然后我添加了“纵横比”约束,在所有设备中看起来都很好……最后

奇怪的是,我还简单地尝试摆脱所有这些限制,并简单地添加了“纵横比”约束和“容器中的水平中心”约束。在主情节提要预览(不是模拟器)上,它看起来是这样的:

不是我想要的,因为它没有像我想要的那样向下伸展,他们又缩小了。然而…当在模拟器中实际运行它时…它看起来很完美,就像我希望它在视图控制器的第一张图片中那样

为什么预览和模拟器不同,我想(从阅读其他问题)是因为在我添加了这些之后有一些警告。一个是水平和垂直位置最初是一个,在运行时会有所不同。但当我运行它时,它肯定保留了最初的版本,而不是他们在运行时所说的版本。它还告诉我垂直位置是不明确的…嗯,是的,我只设置了一个中心和长宽比…非常明显,甚至不知道如何解决这个错误。当我删除水平中心时,它解决了这个问题…但现在它没有居中,这是我想要的后退了一步

长话短说,我该如何处理这件事。我的预览和模拟彼此不准确,即使是最简单的自动布局细节。如今的应用程序非常复杂,在每一台设备上都能很好地扩展和工作,而这似乎与哪怕一个标签都不符

有人有什么好文章、好建议或对我有帮助的东西吗?这个自动布局的东西似乎很挑剔,这就是我所知道的,所以我必须处理它。甚至不要让我开始解释为什么文字与标签不匹配……为什么我希望iPhone4上的文字与ipad上的文字相同,即使我的标签随着设备的尺寸而增大


有很多事情要经历,但这非常令人沮丧,在我试图理解这些基本知识之前,我看不到自己在做其他事情。谢谢你,非常感谢。

习惯它需要一些经验,但一旦你得到了它,你就会永远得到它,而且非常容易

基本上,经验法则是,当涉及到实际对象的大小时,不要完全相信您在故事板中看到的内容。假设您在主视图中有一个水平和垂直居中的
ui视图。没错,它会尽量保持
UIView
的大小,但会将它放在任何大小的设备的中心,但我绝不会让它保持在这个位置。我想:

  • 添加宽度和高度约束
  • 添加宽度/高度约束和纵横比约束
  • 添加宽度约束以及顶部和底部约束
  • 添加高度约束以及前导约束和尾随约束
  • 添加顶部、底部、前导和尾随约束

  • 换句话说,对象的确切大小应该始终通过约束而不是UIView本身来确定。这可以避免挑剔的行为,也可以确保它以您想要的方式显示在任何设备上。

    我认为您必须首先了解约束条件……否则,您总是让事情变得令人沮丧……要了解约束条件,您可以查看此链接

    谢谢!我来看看这些。