2015-05-08 2 views
10

Можно ли изменить заголовок UIBarButtonItem внутри UIToolbar?Отрегулировать вертикальное положение названия UIBarButtonItem внутри UIToolbar

Я попытался следующие строки кода без успеха:

UIBarButtonItem.appearance().setTitlePositionAdjustment(UIOffset(horizontal: 30, vertical: 30), forBarMetrics: UIBarMetrics.Default) 

И это одна:

self.setTitlePositionAdjustment(UIOffset(horizontal: 30, vertical: 30), forBarMetrics: UIBarMetrics.Compact) 
+0

Что конкретно не сусло? –

+0

Корректировка позиции заголовка по вертикали – Antoine

+0

Вы пробовали setTitleEdgeInsets, чтобы изменить позицию заголовка, попробуйте использовать этот вариант, надеясь, что это решит вашу проблему. –

ответ

4

Смещение в UIBarButtonItem (текст!) Внутри UIToolbar вертикально, кажется, не работает с Xcode 7 (бета 6).

Вы правы, according to the docs, это должно сделать это: UIBarButtonItem.appearance().setTitlePositionAdjustment

либо глобально в AppDelegate:

UIBarButtonItem.appearance().setTitlePositionAdjustment(UIOffset(horizontal: 30, vertical: 30), forBarMetrics: UIBarMetrics.Default) 

или локально с самого выхода элемента:

(Swift)

self.myBarItem.setTitlePositionAdjustment(UIOffset(horizontal: 30, vertical: 30), forBarMetrics: UIBarMetrics.Default) 

(Obj C)

[self.myBarItem setTitlePositionAdjustment:UIOffsetMake(30, 30) forBarMetrics: UIBarMetricsDefault]; 

Является ли это ошибка с появлением?

+5

горизонтальные работы, но вертикальные изменения не вносят никаких изменений. – pprevalon

+0

У меня была такая же проблема. Когда я изменил высоту панели инструментов до 44, барбаттоны стали вертикально центральными. Надеюсь, это поможет кому-то. – RVJ

1

Я был разочарован этим, так что я подклассифицировал UIBarButtonItem для работы, как ожидалось. Забрав из this ответа я пришел с этим:

@interface TitleAdjustingBarButtonItem(){ 
    UIView* _parentView; 
    UIButton* _button; 
} 

@end 

@implementation TitleAdjustingBarButtonItem 

-(id) initWithTitle:(NSString *)title style:(UIBarButtonItemStyle)style target:(id)target action:(SEL)action{ 
    _button = [[UIButton alloc] init]; 
    [_button setTitle:title forState:UIControlStateNormal]; 

    [_button addTarget:target action:action forControlEvents:UIControlEventTouchUpInside]; 

    [_button sizeToFit]; 

    _parentView = [[UIView alloc] initWithFrame:_button.bounds]; 

    [_parentView addSubview:_button]; 

    return [super initWithCustomView:_parentView]; 
} 

#pragma mark - property setters - 

-(void) setTitlePositionAdjustment:(UIOffset)adjustment forBarMetrics:(UIBarMetrics)barMetrics{ 
    [_button sizeToFit]; 
    _parentView.bounds = CGRectMake(0.0, 0.0, _button.bounds.size.width - (adjustment.horizontal * 2.0), _button.bounds.size.height - (adjustment.vertical * 2.0)); 
} 

Правдой это не учитывает различные метрики штриховых но для метрик по умолчанию, я получил эту работу очень хорошо.

0

Swift 3 Версия для UITabBarItem создан программно (вы можете изменить это свойство также для точек):

let barItem = UITabBarItem(title: "Menu", 
          image: UIImage(named: "imageName"), 
          selectedImage: UIImage(named: "selectedImageName")) 
barItem.setTitlePositionAdjustment(UIOffset(horizontal: 0, vertical: -10), for: UIBarMetrics.default) 
0

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

let xDisplacement: CGFloat = -25 // Adjust horizontal position 
    let yDisplacement: CGFloat = 9 // Adjust vertical position 
    let h = (self.viewIfLoaded?.frame.size.height)!/12 //Set your height in reference to the size of the view 
    let w = (self.viewIfLoaded?.frame.size.height)!//Set your width in reference to the size of the view 
//Change placement adjusting size for change. 
    self.navigationController?.navigationBar.frame = CGRect(x: xDisplacement, y: yDisplacement, width: w-xDisplacement, height: h-yDisplacement) 

В моем случае фон прозрачный, поэтому настройка на самом деле не имеет значения. Также я пытался переместить заголовок влево. Я думаю, что это единственная ситуация, когда корректировка полезна.

В любом случае, обходной путь, но я надеюсь, что это поможет.

Всего нуб здесь, отзывы оценены.

Смежные вопросы