2015-11-20 3 views
0

У меня есть кнопка в моей навигационной панели. Эта кнопка выровнена по центру. Когда пользователь нажимает на него, модальный вид запускается так же, как Новый раздел в Apple's Музыка приложение для iOS.Установить выравнивание изображения в UIButton для разных размеров текста

Я хочу использовать это изображение стрелки вниз. Я сконфигурировал изображение, которое будет видно с правой стороны (название - изображение) в соответствии с this StackOverflow question.

enter image description here

enter image description here

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

enter image description here

ли какой-нибудь способ, чтобы сделать это изображение выравнивание по правому краю во всех случаях, даже при изменении размера текста? Thanks

Обновление: Я кодирую на Swift. Быстрые фрагменты кода будут оценены.

ответ

0

Свойство titleViewUINavigationItem не изменяет размер по своему содержанию. Если вам когда-нибудь понадобится размер, чтобы изменить, вы должны сделать это сами.

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

Другим вариантом, о котором я могу думать, было бы вручную отрегулировать изображение слева вставки и границы кнопки при изменении текста. Это требует, чтобы вы вычислили ширину текста, чтобы обновить вставку изображения и границы.

+0

я согласен Абт создать пользовательский вид, который изменяет размер его оценки, основанные на chlid взглядов, но [self.navigationItem.titleView addSubview: containerView]; всегда добавляется в верхнюю левую/заднюю панель. Вы здесь здесь? – Alok

+0

Вы хотите сделать 'self.navigationItem.titleView = containerView' –

0

для создания пользовательского вида, который растет на основе ребенка рассматривает вы можете сделать некоторые вещи, как это:

UIView *superview = self.view; 

UIView *containerView = [UIView new]; 
[containerView setBackgroundColor:[UIColor blackColor]]; 
[containerView setTranslatesAutoresizingMaskIntoConstraints:NO]; 
[superview addSubview:containerView]; 
//this will be containing my button and my label 

UILabel *mylabel = [[UILabel alloc]init]; 
[mylabel setBackgroundColor:[UIColor redColor]]; 
[mylabel setTranslatesAutoresizingMaskIntoConstraints:NO]; 
mylabel.text = @"MyLabel"; 

UIButton *mybutton = [UIButton 
         buttonWithType:UIButtonTypeRoundedRect]; 
[mybutton setTitle:@"My Button ye ye yey yeyeyye yeyey" 
      forState:UIControlStateNormal]; 
[mybutton setTranslatesAutoresizingMaskIntoConstraints:NO]; 
[mybutton setBackgroundColor:[UIColor greenColor]]; 

[containerView addSubview:mylabel]; 
[containerView addSubview:mybutton]; 


NSDictionary * views = NSDictionaryOfVariableBindings(mybutton,mylabel, containerView); 
//create pin of fixed 2 pixes between UIButton and UILabel.Done 
NSArray * horizontalConstraintsforbuttons = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-1-[mybutton(<=400)]-2-[mylabel(60)]-1-|" options:0 metrics:nil views:views]; 
NSArray * heightConstraintforbutton = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[mybutton(==60)]" options:0 metrics:nil views:views]; 
NSArray * heightConstraintforLabel = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[mylabel(==60)]" options:0 metrics:nil views:views]; 

[containerView addConstraints:horizontalConstraintsforbuttons]; 
[containerView addConstraints:heightConstraintforbutton]; 
[containerView addConstraints:heightConstraintforLabel]; 


//container view specific constraints 

NSArray *heightConstraint = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[containerView(==60)]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(containerView)]; 

[superview addConstraints:heightConstraint]; 


[superview addConstraint:[NSLayoutConstraint constraintWithItem:containerView attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:superview attribute:NSLayoutAttributeCenterX multiplier:1.0f constant:0.0]]; 

[superview addConstraint:[NSLayoutConstraint constraintWithItem:containerView attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:superview attribute:NSLayoutAttributeCenterY multiplier:1.0f constant:0.0]]; 

ВЫВОД

a customview which grows based on UIButton string length

вы можете взять UIImageView вместо UILabel ,

Я не могу понять, как добавить этот вид контейнера в виде элемента навигации.

Это то, что конечный результат, если добавить

[self.navigationItem.titleView addSubview:containerView]; 

в последней строке. tite view not centered

может быть @clever ошибка может вам

ГПУ
Смежные вопросы