界面生成器 - 使用布局视图框

时间:2011-07-19 05:23:08

标签: cocoa macos xcode4 interface-builder

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

谢谢,

LS Developer

6 个答案:

答案 0 :(得分:4)

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

我可以通过将“初始”颜色从不同项目中的框拖动到框的属性IB检查器窗格中的违规颜色选项来消除警告。

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

答案 1 :(得分:3)

迟到总比没有好,但在我搜索时,这是我发现描述此事的唯一主题。无论如何,感谢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. 删除<bool key="NSTransparent">NO</bool>之后的所有内容,直至下一个</object></array>,然后留下:

    <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源代码中搜索该号码并删除该行,例如<reference key="NSBorderColor2" ref="483112007"/>。在我的情况下,它只是向下几行。

  7. 但仍然没有弄清楚问题的原因。从来没有任何警告设置颜色,并且在意外拖动IB中的某些项目后意外弹出了这个警告。

答案 2 :(得分:2)

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.

答案 3 :(得分:0)

根据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>

然后我将<object class="NSColor"删除为</object>,并且警告已不复存在。

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

由于我的盒子只是化妆品,我创建了一个新盒子,将旧盒子中的按钮移动到新盒子,然后删除旧盒子。问题结束。

相关问题