Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.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_Objective C_Xcode_Interface Builder_Autolayout - Fatal编程技术网

Ios 每次Xcode重新启动时错误放置的视图

Ios 每次Xcode重新启动时错误放置的视图,ios,objective-c,xcode,interface-builder,autolayout,Ios,Objective C,Xcode,Interface Builder,Autolayout,我第一次在我的应用程序中使用故事板 当我关闭Xcode时,我没有关于错误放置视图或与我的故事板有关的任何内容的警告。当我重新启动Xcode并打开情节提要时,我的15个场景中有3个出现了错误的视图警告 不必触摸任何东西(除了选择文件),我就可以发出一个git status,并查看.storyboard文件是否有更改。如果我git diff,我会在文件的多个区域中看到它: <variation key="widthClass=compact" misplaced="YES"> &

我第一次在我的应用程序中使用故事板

当我关闭Xcode时,我没有关于错误放置视图或与我的故事板有关的任何内容的警告。当我重新启动Xcode并打开情节提要时,我的15个场景中有3个出现了错误的视图警告

不必触摸任何东西(除了选择文件),我就可以发出一个
git status
,并查看.storyboard文件是否有更改。如果我
git diff
,我会在文件的多个区域中看到它:

<variation key="widthClass=compact" misplaced="YES">
    <rect key="frame" x="8" y="56" width="130" height="34"/>
</variation>

如何防止每次重新启动时发生这种情况?

首先检查您是否已实现所有约束。如果所有约束都正确,则删除相关约束并再次反驳。

当您在运行时添加不符合实际屏幕大小的约束时,会导致此问题。
例如:如果您有一个宽度超过屏幕宽度(比如说宽度600)的UIButton,并且您为该UIButton添加了固定宽度约束,但没有前导或尾随约束,Xcode不会向您发出警告,因为没有冲突,但当您在屏幕宽度小于600的设备或模拟器上实际运行应用程序时,Xcode将自动调整UIButton width以适应小于600的屏幕宽度,从而使布局约束更改为运行时适合屏幕的布局约束

如果您使用的是大小类,则可能是约束不符合要求(根据所有设备类型,如果有)。如果没有,请尝试调整框架或约束,然后再次检查

自动布局也可能导致此问题。
单击警告后,您将获得有关警告的所有信息。

我以前的应用程序也遇到过同样的问题。我注意到故事板的大小在这里很重要

这是Xcode问题

如果我们使用任意宽度、任意高度的故事板,则不会出现此问题。 如果您使用的故事板大小紧凑、宽度固定、高度固定,则会出现此问题

因此,尝试在Xcode中使用默认情节提要大小

  • 单击预览常规文件(不是
    .xib
    .storyboard
    文件)
  • 退出Xcode
  • 运行git签出。
  • 重新启动Xcode

  • .storyboard
    文件现在没有修改。

    一个简单的修复方法可能是简单地允许Xcode为您选择约束,然后返回并检查它选择的内容,以确保它对您有效

    在故事板中:

    • 选择给您带来问题的视图控制器
    • 解决自动布局问题(右下角)
    • 选定视图:重置为建议视图 约束条件
    要检查已重置的约束,请执行以下操作:

    • 选择控制器中的每个视图
    • 约束检查器(右上)
    • 向下滚动并检查约束

    当您没有正确设置约束时,通常会发生这种情况

    尝试删除UIViewController中的所有视图,然后再次添加新视图以及约束


    清理并运行代码。

    错误放置视图的一个可能原因是:
    如果您在故事板中使用了实时视图(IBDesignables),那么如果在IB构建完所有实时视图之前打开故事板并快速移动到其他文件,则视图会被放错位置。只要您在编辑器中查看故事板,IB就会开始构建实时视图。若要修复错位的视图,请给IB一些时间在情节提要上停留片刻以完成情节提要的构建,错位的视图将得到修复。

    在情节提要的底部,我们可以选择大小类别。如果我将选项从wRegular hRegular更改为任何其他选项,我会遇到类似的问题。我不知道这是为什么

    尝试在打开项目后选择与关闭项目前选择的大小相同的大小类别来解决此问题

    例如,如果选择size类作为iPhone的wCompact hRegular,并且已关闭项目。再次打开项目后,您将看到size类已更改为wRegular hRegular。因此,视图对象会发生变化。再次选择wCompact hRegular以解决问题


    希望能有所帮助。

    我以前也遇到过同样的问题,我想这不是我们的错,只是Xcode的错误


    如果您的
    .storyboard
    文件已更改,但您没有触摸任何东西,只需选择该文件并选择Xcode菜单
    源代码管理
    ->
    放弃“xxxx.storyboard”中的更改,…
    ,它应该可以工作:)

    在我的情况下,所有具有自定义字体和固有(未明确定义)的标签/按钮都会发生这种情况尺寸。看起来像是一个Xcode错误。

    可能是相同的(或相关的)。。。正如@I'L'L所指出的,这是一个XCode问题。有时,如果您打开故事板而什么也不做更改,就会出现错位警告,您会看到,当您打开故事板文件时,会立即出现M符号。除非要进行更改,否则不要打开sotryboard。尝试重新启动计算机或重新加载项目,因为这是一个Xcode问题。您是否使用大小类?如果没有,可能会禁用它们?这并不能真正回答问题。如果您有不同的问题,可以单击以提问。一旦你有足够的时间,你也可以吸引更多的注意力@秀夫:我试图回答这个问题,但我猜我的选词不恰当。我编辑这篇文章是为了让它更有意义(我希望!)我也面临着同样的问题,但是你可以通过使用“修复错位”来轻松解决它。您不必担心,因为这是在您不使用正常大小时发生的。这是一个Xcode错误,它似乎仍然存在于Xcode 8.2.1中。解决方法:对视图使用代码。
    UIView
        UICollectionView
            UICollectionReusableView
            UICollectionViewCell
            UICollectionViewCell
        UISegmentedControl