2016-02-11 2 views
1

У меня есть UItoolbar, в котором добавлено два предмета: 1. UITextView и 2. UIButton. Имущество UITextview - это авторазведение на основе введенного текста. Пока рост высоты UITextview Я хочу ограничить UIButton height, i.e UIButton Высота не должна увеличиваться.Как ограничить высоту UIButton, используя NSLayoutConstraint

[_toolbar setItems:[NSArray arrayWithObjects:barButtonItemCommentText,barButtonItemSubmit,nil]]; 
submitBtn.translatesAutoresizingMaskIntoConstraints = NO; 
textView.translatesAutoresizingMaskIntoConstraints = NO; 
_toolbar.translatesAutoresizingMaskIntoConstraints = NO; 

[_toolbar addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-8-[textView]-79-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(textView)]]; 

[_toolbar addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-8-[textView]-8-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(textView)]]; 

[_toolbar addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[submitBtn]-8-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(submitBtn)]]; 


[_toolbar addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-8-[submitBtn]-8-|" options:NSLayoutFormatAlignAllBaseline metrics:nil views:NSDictionaryOfVariableBindings(submitBtn)]]; 

[_toolbar addConstraint:[NSLayoutConstraint constraintWithItem:submitBtn 
               attribute:NSLayoutAttributeWidth 
               relatedBy:NSLayoutRelationEqual 
                toItem:nil 
               attribute:NSLayoutAttributeNotAnAttribute 
               multiplier:1.0 
                constant:60]]; 
[textView setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; 
[textView setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisVertical]; 

[_toolbar setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisVertical]; 


[_toolbar addConstraint:[NSLayoutConstraint constraintWithItem:_toolbar attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationLessThanOrEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0f constant:MaxToolbarHeight]]; 

Для справки см прилагаемый снимок экрана:

Toolbar with autoresizeing UITextView and UIButton

+2

Может быть, изменить эту строку '[_toolbar addConstraints: [NSLayoutConstraint constraintsWithVisualFormat: @ "V: | -8- [submitBtn] -8- |" options: NSLayoutFormatAlignAllBaseline metrics: nil views: NSDictionaryOfVariableBindings (submitBtn)]]; 'to this' [_toolbar addConstraints: [Ограничения NSLayoutConstraintWithVisualFormat: @ "V: | -> = 8- [submitBtn] -8- |" Параметры: NSLayoutFormatAlignAllBaseline metrics: nil views: NSDictionaryOfVariableBindings (submitBtn)]]; ' –

+0

Спасибо большое @Dima, вы сделали мой день. :) –

ответ

2

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

[_toolbar addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-8-[submitBtn]-8-|" options:NSLayoutFormatAlignAllBaseline metrics:nil views:NSDictionaryOfVariableBindings(submitBtn)]]; 

Если вы измените его на постоянной высоте, чем это не будет расти вертикально, в этом случае всегда высоту 24

[_toolbar addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[submitBtn(24)]-8-|" options:NSLayoutFormatAlignAllBaseline metrics:nil views:NSDictionaryOfVariableBindings(submitBtn)]]; 
+2

Я обнаружил, что оба ответа, которые находятся в комментарии к моему вопросу и вашим ответам, работают в совершенстве. Спасибо Гэндальф и Дима. –

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