Подтвердить что ты не робот

UISegmentedControl - изменяющаяся высота в интерфейсе Builder

Я создаю несколько статических пользовательских UITableViewCells и перетащил UISegmentedControl на одну из пользовательских ячеек.

Пока сегментированный элемент управления позволяет мне изменять его ширину, я не могу изменить его высоту в Interface Builder (это свойство выделено на 44 в разделе "размер" инспектора свойств).

Я знаю, что a UISegmentedControl может быть разбит с пользовательской высотой в коде и добавлен в UITableViewCell. Есть ли способ отрегулировать высоту сегментированного элемента управления в Interface Builder?

4b9b3361

Ответ 2

Вы также можете открыть файл xib в любом текстовом редакторе, например Dashcode или MacVim или TextEdit, - это XML. Затем найдите свой элемент там, в моем случае это выглядело так:

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

Затем вы можете изменить 44 на любую нужную высоту - вы увидите изменения в IB.

Это работает для всех элементов, которые нельзя изменить высоту в IB - UIPicker также...

Ответ 3

Вы можете косвенно изменить его, когда вы нажимаете "Высота" в Interface Builder (выберите элемент управления сегмента, а затем выберите меню Editor -> Pin-> Height).

Это добавит новое ограничение Height в список ограничений для этого элемента управления, который вы затем можете редактировать. Изменения непосредственно отражают в InterfaceBuilder, как вы можете видеть на скриншоте ниже.

interface builder height constraint

Ответ 4

Я не уверен в IB, но вы всегда можете найти ячейку в своем коде и программно настроить высоту UISegmentedControl.

Ответ 5

Чтобы сделать это внутри Interface Builder, вы можете выбрать элемент управления и добавить фрейм в разделе "Атрибуты пользовательских атрибутов времени выполнения"

add frame attribute inside interface builder

Ответ 6

Я хочу добавить к ответу Kender.

Если вы используете раскадровку, а не XIB, вам нужно добавить:

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

Идентификатор может быть чем-то уникальным, я думаю. Может быть, выбрать какой-то идентификатор и изменить одну букву?

Это полный код

<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.