У меня есть интерфейс UIToolbar
в Interface Builder, и я заметил, что он заблокирован ростом 44px. Конечно, я хотел бы сделать это больше.
Разрешает ли Apple изменять размер этого элемента управления? Если да, как мне это сделать?
У меня есть интерфейс UIToolbar
в Interface Builder, и я заметил, что он заблокирован ростом 44px. Конечно, я хотел бы сделать это больше.
Разрешает ли Apple изменять размер этого элемента управления? Если да, как мне это сделать?
Конечно, просто установите его кадр по-разному:
[myToolbar setFrame:CGRectMake(0, 50, 320, 35)];
Это сделает вашу панель инструментов высотой 35 пикселей. Конечно, для этого требуется IBOutlet или создание UIToolbar программно, но это очень легко сделать.
Если это не работает в SDK 6, можно решить следующее:
Выберите элемент панели инструментов и выберите "Редактор" > "Вывод" > "Высота", чтобы создать ограничение. Перейдите в свою сцену контроллера просмотра и выберите созданное ограничение высоты (44), затем введите нужное значение.
Я обнаружил, что если я установил фрейм на 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.
В iOS 6 с автозапуском самым простым подходом является подкласс UIToolbar, в котором вы переопределяете instrinsicContentSize
. Здесь код из одного моего приложения, где панель инструментов высока. Его стороны и дно прикреплены к сторонам и дну надзора, как обычно.
-(CGSize)intrinsicContentSize {
return CGSizeMake(UIViewNoIntrinsicMetric, 85);
}
Для Xcode 7.1 iOS 9 в автоматическом макете размер заблокирован до 44 пикселей. Пункт меню Xcode Editor > Pin > Height не существует, вместо этого выполните следующее действие:
В интерфейсе InterfaceBuilder щелкните элемент панели инструментов, чтобы выбрать его. Control + Перетащите вниз в любом месте панели инструментов и отпустите, появится всплывающее меню с указанием опции "Высота" вверху, выберите ее.
Теперь у вас есть ограничение по высоте, с которым нужно работать и при необходимости отрегулировать.
Вы также можете просто отредактировать файл xib:
откройте его как исходный код и найдите запись, которая определяет кадр для UIToolbar, что-то вдоль строк
<string key="NSFrame">{{0,420}, {320,44}}</string>
и просто измените значение для 44 на любой размер, который вам нужен.
Таким образом, панель инструментов будет выше, а в интерфейсе InterfaceBuilder вы увидите, что новый размер выделен серым цветом, и вы не сможете его изменить, но вам не нужны никакие выходы или код.
Пока у вас есть ограничение по высоте на панели инструментов, вы можете использовать этот небольшой фрагмент, который помог мне настроить высоты для классов, которые наследуют от 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;
}
}
Я не уверен, как это будет с Apple - и, конечно, это зависит от того, как вы хотите использовать панель инструментов, но вы можете добавить UIView по умолчанию и изменить свой класс в инспекторе свойств на UIToolbar. Это дает вам прозрачность и настраиваемость (в этом случае высота) бесплатно, за счет расположения элементов панели.
Быстрое решение:
myToolbar.frame = CGRect(x: myToolbar.frame.origin.x, y: myToolbar.frame.origin.y, width: myToolbar.frame.size.width, height: 20)
CGRectMake
устарел. Это можно заменить на CGRect
. Это установит высоту панели инструментов на 20. То же самое работает и для управления сегментированием.