UISegmentedControl - 在Interface Builder中更改高度

时间:2010-01-26 15:50:57

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

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

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

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

7 个答案:

答案 0 :(得分:39)

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

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

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

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

答案 1 :(得分:35)

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

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

interface builder height constraint

答案 2 :(得分:10)

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

答案 3 :(得分:2)

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

答案 4 :(得分:2)

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

add frame attribute inside interface builder

答案 5 :(得分:1)

我想补充肯德的答案。

如果您使用的是故事板而不是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,以便我可以轻松找到这些内容。

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

答案 6 :(得分:1)

我们可以设置autolayout然后设置height,之后我们可以关闭autolayout。所以它对其他ios 6.0有帮助。