Ответ 1
Нет, это должно быть сделано в коде. См. этот вопрос.
Я создаю несколько статических пользовательских UITableViewCells
и перетащил UISegmentedControl
на одну из пользовательских ячеек.
Пока сегментированный элемент управления позволяет мне изменять его ширину, я не могу изменить его высоту в Interface Builder (это свойство выделено на 44 в разделе "размер" инспектора свойств).
Я знаю, что a UISegmentedControl
может быть разбит с пользовательской высотой в коде и добавлен в UITableViewCell. Есть ли способ отрегулировать высоту сегментированного элемента управления в Interface Builder?
Нет, это должно быть сделано в коде. См. этот вопрос.
Вы также можете открыть файл xib
в любом текстовом редакторе, например Dashcode или MacVim или TextEdit, - это XML. Затем найдите свой элемент там, в моем случае это выглядело так:
<object class="IBUISegmentedControl" id="270020637">
[...]
<string key="NSFrame">{{20, 154}, {176, 44}}</string>
[...]
</object>
Затем вы можете изменить 44
на любую нужную высоту - вы увидите изменения в IB.
Это работает для всех элементов, которые нельзя изменить высоту в IB - UIPicker
также...
Вы можете косвенно изменить его, когда вы нажимаете "Высота" в Interface Builder (выберите элемент управления сегмента, а затем выберите меню Editor -> Pin-> Height
).
Это добавит новое ограничение Height в список ограничений для этого элемента управления, который вы затем можете редактировать. Изменения непосредственно отражают в InterfaceBuilder, как вы можете видеть на скриншоте ниже.
Я не уверен в IB, но вы всегда можете найти ячейку в своем коде и программно настроить высоту UISegmentedControl.
Чтобы сделать это внутри Interface Builder, вы можете выбрать элемент управления и добавить фрейм в разделе "Атрибуты пользовательских атрибутов времени выполнения"
Я хочу добавить к ответу 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, чтобы я мог легко найти материал.
Примечание: чтение раскадровки очень полезно. Изменение файла раскадровки ОЧЕНЬ опасно.
Мы можем установить автозапуск, а затем установить высоту, после чего мы можем отключить автозапуск. так что это поможет другим, кроме ios 6.0.