ios - 如何使用 NSLayoutConstraint 限制 UIButton 高度

标签 ios objective-c uibutton nslayoutconstraint

我有 UItoolbar,其中添加了两项 1. UITextView 和 2. UIButtonUITextview 的属性是根据输入的文本自动增长。 在 UITextview 高度增长的同时,我想限制 UIButton 高度,即 UIButton 高度不应增加。

[_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

最佳答案

下面提到的约束使其在垂直方向上拉伸(stretch),因为它要求始终距离顶部和底部 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)]];

关于ios - 如何使用 NSLayoutConstraint 限制 UIButton 高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35340427/

相关文章:

ios - @3x 图像在 XIB 中的 iPhone 6 或 5S 或 5 上错误地使用了 "Use as Launch Image"选项集

objective-c - ObjC ARC收缩(c铛崩溃)

ios - 如何更改 UIButton 的宽度约束变化方向?

iphone - 如何快速从 CoreData 中删除?

ios - AlertController 不在窗口层次结构中

objective-c - 反汇编简单的 ARM 指令?

ios - UIButton 的正常状态和突出显示状态之间的动画转换

iphone - 自定义字体不以大写字母显示分音符

iphone - TableView 部分更改时的方法调用

ios - 如何将值附加到模型类