寻找“自动首选最大布局宽度在 iOS 8.0 以前的版本不可用”的原因

15
我知道这个警告的原因以及如何解决它:给标签(label)指定一个优先宽度。
问题是,当我点击这个警告时,我没有看到任何被选择的标签/视图/视图控制器。故事板打开了,就这样。我的故事板中有很多视图控制器和许多视图,如何在不手动迭代所有视图控制器的情况下找出导致问题的标签?当我点击警告时,我希望它带我到引起警告的视图,但它只是打开了故事板。
8个回答

38

以下是找到引起此警告的特定标签的一种方法:

  1. 右键单击警告,选择“在日志中显示”
  2. 日志中将突出显示警告。 复制此标签的接口构建器对象 ID(看起来像 xxx-xx-xxx)。
  3. 将其粘贴到“查找导航器”中。 单击此结果时,它将打开带有有问题的标签的界面生成器。

虽然这不是理想的、不直观的方式,但我认为目前这是唯一的方法。谢谢。 - Can Poyrazoğlu
2
“在日志中显示”在Xcode 6.2(6C131e)中似乎没有任何作用,至少在我正在使用的这个.xcworkspace中是这样的。 :( - taber
@taber 是的,在6.2中它对我也没有任何作用。 - bperdue
1
如果你已经修复了警告,你可能需要清理项目以使其消失。 - Borzh

12

在运行XCODE 6.1时,我发现找到错误最简单的方法是通过报告导航器。

  1. View -> Navigators -> Show Report Navigator或者直接按下⌘-8
  2. 在左侧窗格中点击构建。
  3. 单击警告旁边的详细信息图标。

enter image description here

  1. 在警告描述中查找对象ID。

enter image description here

  1. 转到文件并使用⌘-f搜索对象ID。

enter image description here

  1. 修复问题。iOS 8.0之前版本上不支持自动首选最大布局宽度

2
该帖子所述,您还可以在Storyboard源代码中使用此正则表达式<label(?!.*preferredMaxLayoutWidth)查找所有未设置preferredMaxLayoutWidth的标签。然后进行更正。

2

@Don Eichenseer的回答很好。但是对于那些想要解决它的人: 我之前也遇到了同样的问题。问题是由于一个UILabel,它的Lines属性(在Attribute检查器中)超过了1。当你找到相关的UILabel后,将其行数设置为1


这不是一个解决方案。如果标签需要是多行的呢? - Abdalrahman Shatou
是的,这不是绝对的解决方案。它适用于不需要多行的标签。 - Majid

2
只需要从标签中删除行号并通过编程方式进行设置。
[label setNumberOfLines:2];

1
这不是一个解决方案,只是警告的权宜之计。 - DawnSong

1

这是来自集合视图的警告吗?如果是,我猜它是一个单元格和一个标签,行数设置为零。


不,那只是一个普通的标签。我已经找到了它(有多个)。但是找出问题的原因是适得其反的。 - Can Poyrazoğlu

0

我在一个使用7.1版本而没有使用自动布局的现有项目中遇到了同样的问题。一旦我将应用程序迁移到iOS8并在项目文件中将版本更改为8.0,由于某种原因,我在使用多行UILabel的Xib文件中得到了该警告。

为了解决问题,请选择Xib的文件检查器,并检查它构建的版本,在我的情况下仍然是为iOS7构建的。

enter image description here

你应该将构建版本更改为相关版本

enter image description here

而且警告会消失,就像在我的情况下一样 :-)


但是如果我还需要支持iOS 8之前的版本呢? - Can Poyrazoğlu
1
好的,你可以在iOS7中支持自动布局,就像我提到的那样。在我的情况下,一旦我迁移到iOS8,Xib仍然停留在iOS7(没有迁移),我收到了关于“自动首选最大布局宽度”的警告。一旦我在文件检查器中将构建更改为iOS8(与项目相同),警告消失了。希望这能帮到你。 - Gutty1

0
我必须切换到XCode 6.2 --> 点击主XCode区域右上角的警告图标 --> 选择警告 --> 它会显示导致警告的确切项目。 在此输入图片描述

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接