it-swarm.com.ru

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

У меня есть UIToolbar в Интерфейсном Разработчике, и я заметил, что он имеет высоту 44px. Конечно, я хотел бы сделать это больше.

Разрешает ли Apple изменение размера этого элемента управления? Если да, то как мне это сделать?

59
mac_55

Конечно, просто установите его кадр по-другому:

[myToolbar setFrame:CGRectMake(0, 50, 320, 35)];

Это сделает вашу панель инструментов 35 пикселей в высоту. Конечно, для этого требуется IBOutlet или создание UIToolbar программно, но это очень легко сделать.

64
David Kanarek

Если это не работает в SDK 6, можно решить, как показано ниже:

Выберите элемент панели инструментов и выберите «Редактор»> «PIN-код»> «Высота», чтобы создать ограничение ... Перейдите к своей сцене View Controller Scene и выберите созданное ограничение «Высота (44)», а затем введите желаемое значение.

45
ericmaciel

Я обнаружил, что если я установлю рамку на iPad, то при скрытии/показе панели инструментов она вернется к высоте 44 пикселя. В итоге мне пришлось переопределить UIToolbar и изменить метод:

// 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;
};     

Это правильно отрегулирует высоту даже при скрытии/показе.

38
christophercotton

В iOS 6 с autolayout самый простой подход - это подкласс UIToolbar, в котором вы переопределяете instrinsicContentSize. Вот код из одного моего приложения, где панель инструментов высокая. Его стороны и основание прикреплены к сторонам и основанию суперпредставления как обычно.

-(CGSize)intrinsicContentSize {
    return CGSizeMake(UIViewNoIntrinsicMetric, 85);
}
15
matt

Для Xcode 7.1 iOS 9 в автоматическом макете размер заблокирован до 44px. Пункт меню Редактора Xcode> Pin> Высота не там, вместо этого выполните следующее действие:

В InterfaceBuilder щелкните элемент панели инструментов, чтобы выбрать его . Control + Перетащите курсор вниз в любом месте панели инструментов и отпустите. Появится всплывающее меню, показывающее параметр «Высота» вверху, выберите его.

Теперь у вас есть ограничение высоты для работы и настройки по мере необходимости.

14
cavalleydude

Вы также можете просто отредактировать файл xib: 

откройте его как исходный код и найдите запись, которая определяет фрейм для UIToolbar, что-то вроде 

<string key="NSFrame">{{0,420}, {320,44}}</string>

и просто измените значение 44 на любой нужный вам размер.

Таким образом, панель инструментов будет выше, а в InterfaceBuilder вы увидите, что новый размер выделен серым цветом, и вы не сможете его изменить, но вам не нужны никакие розетки или код.

6
Radu Diță

Пока у вас есть ограничение высоты на панели инструментов, вы можете использовать этот небольшой фрагмент, который помог мне настроить высоту для классов, которые наследуются от UIView

-(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;
    }
 }
2
Alberto Lopez

Я не уверен, как это будет с Apple - и, конечно, это зависит от того, как вы хотите использовать панель инструментов, - но вы можете добавить UIView по умолчанию и изменить его класс в инспекторе свойств на UIToolbar. Это дает вам прозрачность и настраиваемость (в данном случае высоту) бесплатно, за счет расположения элементов панели кнопок.

1
Robin Macharg

В конструкторе интерфейсов также есть возможность использовать «Определяемые пользователем атрибуты времени выполнения».

Просто добавьте запись с keypath, установленным в «frame» типа «Rect», и установите желаемое значение.

 enter image description here

0
FredericK

Быстрое решение:

myToolbar.frame = CGRect(x: myToolbar.frame.Origin.x, y: myToolbar.frame.Origin.y, width: myToolbar.frame.size.width, height: 20)

CGRectMake устарела. Это может быть заменено на CGRect. Это установит высоту панели инструментов равной 20. То же самое работает и для сегментированного управления.

0
Ragul Parani