【问题标题】:Interface Builder - Using Layout View-BoxInterface Builder - 使用布局视图框
【发布时间】:2011-10-08 05:28:49
【问题描述】:

我在我的应用程序中使用布局视图 - 'Box',当我构建它时,我收到以下警告。 “不支持的配置。填充颜色属性需要 NSCustomBox 类型和 NSLineBorder 类型”。我使用的是 XCode 4.0。 可能是什么原因,我该如何解决?

谢谢,

LS 开发人员

【问题讨论】:

  • 你试过使用NSCustomBoxNSLineBorder吗?

标签: cocoa macos xcode4 interface-builder


【解决方案1】:

如果我将非自定义主框的边框颜色或填充颜色设置为 IB 初始化它的颜色以外的任何颜色,我会收到警告“边框颜色属性需要 NSCustomBox 类型和 NSLineBorder 类型”

我可以通过将“初始”颜色从 DIFFERENT 项目中的框中拖动到框的属性 IB 检查器窗格中的有问题的颜色选择上来消除警告。

填充颜色更改会产生略有不同的警告文本,但从另一个项目中的原始框中拖动填充颜色也会消除该警告。 Apple 似乎忘记在他们的颜色选择菜单中添加一个“初始值”项。

【讨论】:

    【解决方案2】:

    迟到总比没有好,但是当我搜索时,这是我发现的唯一一个描述此事的线程。无论如何,感谢Wayfaring Stranger,您的回答帮助我找到了替代解决方案。可能会对某人有所帮助,因为拖放颜色并不完全适合我。

    1. 在界面生成器中找到您的盒子并为其指定一个唯一的名称(只是暂时的)。
    2. 右键单击您的 .xib 并选择“打开方式”>“源代码”。
    3. 搜索您为您的盒子指定的名称(或其他名称)。
    4. 你会发现这样的东西:

      <object class="NSTextFieldCell" key="NSTitleCell">
          <int key="NSCellFlags">67108864</int>
          <int key="NSCellFlags2">0</int>
          <string key="NSContents">uniqueNameHere</string>
          <reference key="NSSupport" ref="26"/>
          <reference key="NSBackgroundColor" ref="449986353"/>
          <object class="NSColor" key="NSTextColor">
              <int key="NSColorSpace">3</int>
              <bytes key="NSWhite">MCAwLjgwMDAwMDAxMTkAA</bytes>
          </object>
      </object>
      <reference key="NSContentView" ref="183372649"/>
      <int key="NSBorderType">0</int>
      <int key="NSBoxType">0</int>
      <int key="NSTitlePosition">0</int>
      <bool key="NSTransparent">NO</bool>
      <bool key="NSFullyTransparent">YES</bool>
      <real value="0.0" key="NSBorderWidth2"/>
      <object class="NSColor" key="NSBorderColor2" id="483112007">
          <int key="NSColorSpace">6</int>
          <string key="NSCatalogName">System</string>
          <string key="NSColorName">textColor</string>
          <reference key="NSColor" ref="703464901"/>
      </object>
      <reference key="NSFillColor2" ref="483112007"/>
      
    5. 删除&lt;bool key="NSTransparent"&gt;NO&lt;/bool&gt; 到下一个&lt;/object&gt;&lt;/array&gt; 之后的所有内容,留下:

      <object class="NSTextFieldCell" key="NSTitleCell">
          <int key="NSCellFlags">67108864</int>
          <int key="NSCellFlags2">0</int>
          <string key="NSContents">uniqueNameHere</string>
          <reference key="NSSupport" ref="26"/>
          <reference key="NSBackgroundColor" ref="449986353"/>
          <object class="NSColor" key="NSTextColor">
              <int key="NSColorSpace">3</int>
              <bytes key="NSWhite">MCAwLjgwMDAwMDAxMTkAA</bytes>
          </object>
      </object>
      <reference key="NSContentView" ref="183372649"/>
      <int key="NSBorderType">0</int>
      <int key="NSBoxType">0</int>
      <int key="NSTitlePosition">0</int>
      <bool key="NSTransparent">NO</bool>
      
    6. 您对该项目的所有警告都将消失,除了一个:This archive contains a reference to an object with the identifier "483112007" but does not contain an object with a matching identifier. 在您的 .xib 源代码中搜索该数字并删除该行,例如&lt;reference key="NSBorderColor2" ref="483112007"/&gt;。就我而言,它只是再往下几行。

    仍然没有弄清楚问题的原因。从来没有任何设置颜色的警告,在IB中不小心拖动一些项目后意外弹出。

    【讨论】:

      【解决方案3】:

      按照 Wayfaring Stranger 的建议,我在一个新项目中解决了从 NSBox 拖放颜色的问题。如果您想手动更改 XIB,更改(我在 Xcode 5.0.2 上)是:

      已删除(您的值可能会有所不同,这是“默认颜色”:

      - <color key="borderColor" name="textColor" catalog="System" colorSpace="catalog"/>
      - <color key="fillColor" name="textColor" catalog="System" colorSpace="catalog"/>
      

      替换为:

      + <color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
      + <color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
      

      当然,在相关部分。 XIB 是第 5 版。

      【讨论】:

      • Xcode 6.2 在这里,我通过从新实例化的 NSBox 中复制 borderColorfillColor 标记来消除警告。此外,我不得不清理项目、关闭 Xcode 并重新构建,最终让警告消失
      【解决方案4】:

      根据 Jonas 的回答,我设法通过在 .xib 文件中搜索 NSTransparent 来修复我的警告:

      右键单击或按住 Ctrl 键单击您的 .xib 并选择“打开为 -> 源代码”

      搜索 NSTransparent 以找到类似于:

      <bool key="NSTransparent">NO</bool>
      <object class="NSColor" key="NSFillColor2">
        <int key="NSColorSpace">1</int>
       <bytes key="NSRGB">MSAwLjgwMDAwMDAxMTkgMC40MDAwMDAwMDYgMC4wNAA</bytes>
      </object>
      

      然后我将 &lt;object class="NSColor" 删除到 &lt;/object&gt; 包括在内,警告不再存在。

      【讨论】:

        【解决方案5】:

        我只是通过在 IB 的 Box Type 中选择 Custom 来解决这个问题。这使消息立即消失。

        首先我对这个消息感到困惑,因为我在另一个项目中做了类似的事情(即更改 NSBox 的背景颜色)为白色。但后来我记得我也更改了 Box Type。这样就成功了。

        【讨论】:

          【解决方案6】:

          由于我的盒子只是装饰性的,我创建了一个新盒子,将旧盒子中的按钮移动到新盒子,并删除了旧盒子。问题结束。

          【讨论】:

            猜你喜欢
            • 2015-03-01
            • 1970-01-01
            • 1970-01-01
            • 2012-06-12
            • 2015-02-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多