ios - 将 ImageView 放入 Collection View 单元格导致 IBTool 发出警告

标签 ios interface-builder xcode5 autolayout

我正在使用 Xcode 5。

出于某种原因,如果我将 Image View 放入 Collection View Cell 中,我会收到以下警告

2013-11-20 06:21:39.987 Interface Builder Cocoa Touch Tool[1237:303] 
WARNING: 
Reason:     Could not find layout engine view for view's (<UIView: 0x102939b0; frame = (-20 -20; 90 90); autoresize = RM+BM; layer = <CALayer: 0x10288690>>) coordinate space view <UIView: 0x1028aaf0; frame = (0 0; 50 50); autoresize = W+H; gestureRecognizers = <NSArray: 0x10298620>; layer = <CALayer: 0x10299730>>. But the canvas coordinateSpaceView is view's superview, so we are assuming the same in the layout engine.
File:       /SourceCache/IBAutolayoutFoundationIOS/IBAutolayoutFoundation-3430/Framework/Classes/Arbitration/IBAutolayoutEngine.m:335
Method:     -[IBAutolayoutEngine layoutFrameForView:inCoordinateSpaceOfView:]

这些警告会污染编译输出,有时我会错过重要消息。

我怎样才能摆脱它?

这是导致它的 Storyboard片段:

<collectionView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" fixedFrame="YES" restorationIdentifier="zzzzz" minimumZoomScale="0.0" maximumZoomScale="0.0" dataMode="prototypes" translatesAutoresizingMaskIntoConstraints="NO" id="esr-tl-gXA">
    <rect key="frame" x="80" y="104" width="160" height="207"/>
    <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
    <collectionViewFlowLayout key="collectionViewLayout" minimumLineSpacing="10" minimumInteritemSpacing="10" id="dJb-8s-18M">
        <size key="itemSize" width="50" height="50"/>
        <size key="headerReferenceSize" width="0.0" height="0.0"/>
        <size key="footerReferenceSize" width="0.0" height="0.0"/>
        <inset key="sectionInset" minX="0.0" minY="0.0" maxX="0.0" maxY="0.0"/>
    </collectionViewFlowLayout>
    <cells>
        <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" id="A9w-gO-BzK">
            <rect key="frame" x="0.0" y="0.0" width="50" height="50"/>
            <autoresizingMask key="autoresizingMask"/>
            <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
                <rect key="frame" x="0.0" y="0.0" width="50" height="50"/>
                <autoresizingMask key="autoresizingMask"/>
                <subviews>
                    <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="55Z-yW-7Qm">
                        <rect key="frame" x="0.0" y="0.0" width="50" height="50"/>
                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                    </imageView>
                </subviews>
                <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
            </view>
        </collectionViewCell>
    </cells>
</collectionView>

最佳答案

我已经为这个问题苦苦挣扎了一段时间(遇到类似的 ibtool 错误和异常),并尝试了以下所有方法:

  1. 检查了所有 XIB 文件,其中的 View 被报告为具有“错误”关系。还按照 ibtool 异常信息中的建议分析了 console.app 中的崩溃报告。我的布局没有任何问题。
  2. 删除了包含 UICollectionViewCell 和 UICollectionView 的 XIB 文件。然后在 Xcode5 中从头开始重新创建它们。
  3. 清理 + 重建。
  4. 重新启动 Xcode,重新启动 iOS 模拟器。
  5. 删除 Xcode:~/Applications/Xcode 和 ~/Library/Developer/Xcode,然后重新安装最新的 Xcode,并重新启动机器。
  6. 将项目迁移到 Storyboard(即将几乎所有 XIB 文件替换为一个 Storyboard。这个工具需要大量工作)。

即使在迁移到 Storyboard 之后,偶尔也会弹出同样的错误,但我随后发现以下解决方法:

  1. 重置 iOS 模拟器(iOS 模拟器 > 重置内容和设置)
  2. 清理 Xcode 项目,然后重新启动 Xcode。
  3. 重启 iOS 模拟器。

当然这是苹果,我和他们一起养过它。

关于ios - 将 ImageView 放入 Collection View 单元格导致 IBTool 发出警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20098552/

相关文章:

ios - Objective-C 返回类型 : "-(id) init" vs "-(ClassName *) init"

ios - 访问存储在 ngCordova/ionic iOS 应用程序中的 mp3 文件

ios - 如何构建具有可折叠部分的表格 View ?

iphone - 如何在IB中添加uiscrollview

ios - 从属性中省略/删除 'strong' 属性时发出警告?

iphone - EXC_BAD_access code=2 地址 0x8

ios - NSCoreData 关系级联删除不起作用

xcode - 无法在界面构建器中打开库窗口

ios - UITableView header 中容器 View 的高度错误

代码 5 : How to build Debug configuration only