【问题标题】:UISegmentedControl - altering height in Interface BuilderUISegmentedControl - 在界面生成器中改变高度
【发布时间】:2011-01-09 13:48:37
【问题描述】:

我正在创建一些静态自定义 UITableViewCells 并将 UISegmentedControl 拖到其中一个自定义单元格上。

虽然分段控件允许我更改其宽度,但我无法在 Interface Builder 中更改其高度(该属性在属性检查器的“大小”部分中的 44 处显示为灰色)。

我知道UISegmentedControl 可以在代码中使用自定义高度创建并添加到 UITableViewCell。有什么办法可以在Interface Builder中调整分段控件的高度吗?

【问题讨论】:

    标签: iphone objective-c interface-builder height uisegmentedcontrol


    【解决方案1】:

    您也可以在任何文本编辑器中打开xib 文件,例如 Dashcode 或 MacVim 或 TextEdit - 它是一个 XML。然后在那里找到你的元素,在我的例子中它看起来像:

    <object class="IBUISegmentedControl" id="270020637">
        [...]
        <string key="NSFrame">{{20, 154}, {176, 44}}</string>
        [...]
    </object>
    

    然后您可以将44 更改为您想要的任何高度 - 您将看到 IB 中的更改。

    这适用于所有无法在 IB 中更改高度的元素 - UIPicker 也...

    【讨论】:

    • 非常好。现在责怪苹果一开始就不让我们在 IB 中修改它
    • 很棒的答案!苹果失败了!
    • #highqualityanswer 这是在 Xcode 5.1 上对我有用的唯一解决方案 谢谢!
    • 您也可以右键单击项目列表中的 .xib 并选择“打开方式”,然后选择“源代码”
    【解决方案2】:

    您可以在 Interface Builder 中固定“高度”时间接更改它(选择段控件,然后通过菜单选择 Editor -&gt; Pin-&gt; Height)。

    这将在该控件的约束列表中添加一个新的高度约束,然后您可以对其进行编辑。更改直接反映在 InterfaceBuilder 中,如下面的屏幕截图所示。

    【讨论】:

    • 帮助很大。谢谢。是的,仅限 iOS6,但截至 2013 年 2 月,这是 iOS 设备的 83%。 tuaw.com/2013/02/13/…
    • 当它嵌入到导航栏时,似乎我们无法更改。
    【解决方案3】:

    不,必须在代码中完成。 See this question.

    【讨论】:

      【解决方案4】:

      我不确定在 IB 中,但您总是可以在代码中找到单元格并以编程方式调整其 UISegmentedControl 的高度。

      【讨论】:

        【解决方案5】:

        要在 Interface Builder 中执行此操作,您可以在“用户定义的运行时属性”下选择控件并添加框架属性

        【讨论】:

          【解决方案6】:

          我想补充 Kender 的答案。

          如果您使用故事板而不是 XIB,则需要添加:

                                          <constraint firstAttribute="height" constant="10" id="9Wo-6S-8EM"/>
                                          <constraint firstAttribute="width" constant="201" id="lw7-cq-3XN"/>
          

          我猜 id 可以是任何独特的东西。也许选择一些 ID 并修改一个字母?

          这是完整的代码

          <segmentedControl opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" translatesAutoresizingMaskIntoConstraints="NO" id="RMR-XS-abw" userLabel="ngentot2">
                                  <constraints>
                                      <constraint firstAttribute="height" constant="10" id="9Wo-6S-8EM"/>
                                      <constraint firstAttribute="width" constant="201" id="lw7-cq-3XN"/>
                                  </constraints>
                                  <segments>
                                      <segment title="First"/>
                                      <segment title="Second"/>
                                  </segments>
                              </segmentedControl>
          

          我添加了一个 userLabel 以便我可以轻松找到这些东西。

          注意:阅读故事板很有启发性。 更改故事板文件非常危险。

          【讨论】:

            【解决方案7】:

            我们可以设置自动布局,然后设置高度,然后我们可以关闭自动布局。所以这将有助于其他然后 ios 6.0 。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2012-08-15
              • 1970-01-01
              • 2011-04-13
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多