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

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

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

Если это не работает в SDK 6, можно решить следующее:

Выберите элемент панели инструментов и выберите "Редактор" > "Вывод" > "Высота", чтобы создать ограничение. Перейдите в свою сцену контроллера просмотра и выберите созданное ограничение высоты (44), затем введите нужное значение.

Ответ 3

Я обнаружил, что если я установил фрейм на iPad, то при скрытии/показе панели инструментов reset вернется на высоту 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;
};     

Это позволит скорректировать высоту даже с помощью hide/show.

Ответ 4

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

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

Ответ 5

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

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

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

Ответ 6

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

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

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

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

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

Ответ 7

Пока у вас есть ограничение по высоте на панели инструментов, вы можете использовать этот небольшой фрагмент, который помог мне настроить высоты для классов, которые наследуют от 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;
    }
 }

Ответ 8

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

Ответ 9

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

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

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