Изменение ширины и сдвиг UINavigationBar

Рейтинг: 0Ответов: 1Опубликовано: 12.12.2014

Есть ли способы изменить ширину UINavigationBar? Нашел код (категорию), который меняет ширину бара, но UINavigationBar остается посредине. Не могу найти, как его сдвинуть вправо.

- (CGSize)sizeThatFits:(CGSize)size {

    CGSize newSize = CGSizeMake(250, 44);
    return newSize;
}

Ответы

▲ 1Принят

Прежде всего вопрос а зачем оно вам надо? Перед тем как менять жестко зафиксированные размеры элементов стоит подумать дважды.

Если же абстрагироваться это этого вопроса, то механизм довольно прост - нужно сделать своего наследника от UINavigationBar, указать что именно он будет использоваться, а не стандартный бар. Ну а после этого уже можно поиграть с размерами и положением этого наследника. В принципе, у меня получилось передвинуть с помощью переопределения setCenter:

-(void) setCenter:(CGPoint)center{
    center.x += kOffset;
    [super setCenter:center];
}

Но хочу сразу предупредить, поскольку это вмешательство туда куда эппл изначально программистов не пускает, есть шанс огрести геморрой с поддержкой в разных версиях, у меня такое уже было - что-то привязывал к ресайзу какого-то из сабвью (найденного с помощью перебора массивом subviews), а в очередной версии операционки 6.1 это перестало работать т.к. то ли изменили иерархию видов, то ли просто забили и размер вида всегда был большим и просто кропался (уже не помню)