1

在我的应用程序中,我有以下设置:

文本视图(self.textView)

工具栏

当键盘变得可见时,我添加了一个约束,该约束将文本视图的底部向上推至所需的像素数。

spacer =[NSLayoutConstraint
                                   constraintWithItem:self.textView
                                   attribute:NSLayoutAttributeBottom
                                   relatedBy:NSLayoutRelationEqual
                                   toItem:self.view
                                   attribute:NSLayoutAttributeBottom
                                   multiplier:1.0
                                   constant:-height];
[self.view addConstraint:spacer];

当键盘消失时,我删除了约束。

这很好用。然而...

我想添加一个位于文本视图顶部的图像视图。这似乎很简单。但是现在“关闭键盘”调整大小被打破了。

这是我用来创建 imageview 并将其固定到 textview 边界的代码。

self.overlay = [[UIImageView alloc] init];

[self.overlay setTranslatesAutoresizingMaskIntoConstraints:NO];
[self.view addSubview:self.overlay];

[self.view addConstraint: [NSLayoutConstraint
                           constraintWithItem:self.overlay
                           attribute:NSLayoutAttributeBottom
                           relatedBy:NSLayoutRelationEqual
                           toItem:self.textView
                           attribute:NSLayoutAttributeBottom
                           multiplier:1.0
                           constant:0]];
[self.view addConstraint: [NSLayoutConstraint
                           constraintWithItem:self.overlay
                           attribute:NSLayoutAttributeTop
                           relatedBy:NSLayoutRelationEqual
                           toItem:self.textView
                           attribute:NSLayoutAttributeTop
                           multiplier:1.0
                           constant:0]];
[self.view addConstraint: [NSLayoutConstraint
                           constraintWithItem:self.overlay
                           attribute:NSLayoutAttributeLeft
                           relatedBy:NSLayoutRelationEqual
                           toItem:self.textView
                           attribute:NSLayoutAttributeLeft
                           multiplier:1.0
                           constant:0]];
[self.view addConstraint: [NSLayoutConstraint
                           constraintWithItem:self.overlay
                           attribute:NSLayoutAttributeRight
                           relatedBy:NSLayoutRelationEqual
                           toItem:self.textView
                           attribute:NSLayoutAttributeRight
                           multiplier:1.0
                           constant:0]];
[self.view layoutIfNeeded];

这是它的外观:

键盘显示前的初始值

键盘显示前的初始值

键盘显示

键盘显示

键盘被移除。布局应该回到初始状态,但我得到了这个

应该回到初始状态,但我得到了这个

4

1 回答 1

0

解决方案:将工具栏的内容拥抱优先级设置为1.000,以避免它被全部拉伸。

于 2013-07-29T16:26:48.877 回答