есть ли способ изменить высоту uitoolbar?

<p>у меня есть <code>uitoolbar</code> в интерфейсном разработчике, и я заметил, что он имеет высоту 44px. конечно, я хотел бы сделать это больше.</p><p>разрешает ли apple изменение размера этого элемента управления? если да, то как мне это сделать?</p>

<p>конечно, просто установите его кадр по-другому:</p><pre><code>[mytoolbar setframe:cgrectmake(0, 50, 320, 35)]; </code></pre><p>это сделает вашу панель инструментов 35 пикселей в высоту. конечно, для этого требуется iboutlet или создание uitoolbar программно, но это очень легко сделать.</p>

<p>если это не работает в sdk 6, можно решить, как показано ниже:</p><p>выберите элемент панели инструментов и выберите «редактор»> «pin-код»> «высота», чтобы создать ограничение ... перейдите к своей сцене view controller scene и выберите созданное ограничение «высота (44)», а затем введите желаемое значение.</p>

<p>я обнаружил, что если я установлю рамку на ipad, то при скрытии/показе панели инструментов она вернется к высоте 44 пикселя. в итоге мне пришлось переопределить uitoolbar и изменить метод:</p><pre><code>// return 'best' size to fit given size. does not actually resize view. default is return existing view size - (cgsize)sizethatfits:(cgsize)size { cgsize result = [super sizethatfits:size]; result.height = 55; return result; }; </code></pre><p>это правильно отрегулирует высоту даже при скрытии/показе.</p>

<p>в ios 6 с autolayout самый простой подход - это подкласс uitoolbar, в котором вы переопределяете <code>instrinsiccontentsize</code>. вот код из одного моего приложения, где панель инструментов высокая. его стороны и основание прикреплены к сторонам и основанию суперпредставления как обычно.</p><pre><code>-(cgsize)intrinsiccontentsize { return cgsizemake(uiviewnointrinsicmetric, 85); } </code></pre>

<p>для xcode 7.1 ios 9 в автоматическом макете размер заблокирован до 44px. пункт меню редактора xcode> pin> высота не там, вместо этого выполните следующее действие:</p><p>в interfacebuilder щелкните элемент панели инструментов, чтобы выбрать его . control + перетащите курсор вниз в любом месте панели инструментов и отпустите. появится всплывающее меню, показывающее параметр «высота» вверху, выберите его.</p><p>теперь у вас есть ограничение высоты для работы и настройки по мере необходимости.</p>

<p>вы также можете просто отредактировать файл xib: </p><p>откройте его как исходный код и найдите запись, которая определяет фрейм для uitoolbar, что-то вроде </p><p><code><string key="nsframe">{{0,420}, {320,44}}</string></code></p><p>и просто измените значение 44 на любой нужный вам размер.</p><p>таким образом, панель инструментов будет выше, а в interfacebuilder вы увидите, что новый размер выделен серым цветом, и вы не сможете его изменить, но вам не нужны никакие розетки или код.</p>

<p>пока у вас есть ограничение высоты на панели инструментов, вы можете использовать этот небольшой фрагмент, который помог мне настроить высоту для классов, которые наследуются от uiview</p><pre><code>-(void)setheightconstraintto:(cgfloat)height forview:(uiview *)view{ nspredicate *predicate = [nspredicate predicatewithformat:@"firstattribute = %d", nslayoutattributeheight]; nsarray *filteredarray = [view.constraints filteredarrayusingpredicate:predicate]; if(filteredarray.count > 0){ nslayoutconstraint *constraint = filteredarray.firstobject; constraint.constant = height; } } </code></pre>

<p>я не уверен, как это будет с apple - и, конечно, это зависит от того, как вы хотите использовать панель инструментов, - но вы можете добавить uiview по умолчанию и изменить его класс в инспекторе свойств на uitoolbar. это дает вам прозрачность и настраиваемость (в данном случае высоту) бесплатно, за счет расположения элементов панели кнопок.</p>

<p>в конструкторе интерфейсов также есть возможность использовать «определяемые пользователем атрибуты времени выполнения».</p><p>просто добавьте запись с keypath, установленным в «frame» типа «rect», и установите желаемое значение.</p><p> <a href="https://i.stack.imgur.com/yqeu9.png"> <img src="https://i.stack.imgur.com/yqeu9.png" alt="enter image description here"> </a> </p>

<p>быстрое решение:</p><pre><code>mytoolbar.frame = cgrect(x: mytoolbar.frame.origin.x, y: mytoolbar.frame.origin.y, width: mytoolbar.frame.size.width, height: 20) </code></pre><p><code>cgrectmake</code> устарела. это может быть заменено на <code>cgrect</code>. это установит высоту панели инструментов равной 20. то же самое работает и для сегментированного управления.</p>