1
我在編程上創建約束,使視圖控制器視圖具有背景視圖和工具欄,底部的工具欄。我希望背景視圖的高度隨着工具欄高度的增加而減小。在將背景視圖和工具欄添加爲視圖控制器視圖的子視圖後,我調用(在viewDidLoad中)以編程方式設置約束的方法。自動佈局約束不受重視
- (void)configureConstraintsForBackgroundViewAndToolbar {
[self.backgroundView setTranslatesAutoresizingMaskIntoConstraints:NO];
[self.toolbarComponent setTranslatesAutoresizingMaskIntoConstraints:NO];
UIView *constraintsBackgroundView = self.backgroundView;
UIView *constraintsToolbar = self.toolbarComponent;
NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(
constraintsBackgroundView,
constraintsToolbar);
NSDictionary *metricsDictionary = @{
@"toolbarHeight":[NSNumber numberWithFloat:TOOLBAR_HEIGHT]
};
[NSLayoutConstraint activateConstraints:
[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-(0)-[constraintsBackgroundView]-(0)-|"
options:NSLayoutFormatDirectionLeadingToTrailing
metrics:metricsDictionary
views:viewsDictionary]];
[NSLayoutConstraint activateConstraints:
[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-(0)-[constraintsToolbar]-(0)-|"
options:NSLayoutFormatDirectionLeadingToTrailing
metrics:metricsDictionary
views:viewsDictionary]];
[NSLayoutConstraint activateConstraints:
[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-(0)-[constraintsBackgroundView]-(0)-[constraintsToolbar(>=toolbarHeight)]-(0)-|"
options:NSLayoutFormatDirectionLeadingToTrailing
metrics:metricsDictionary
views:viewsDictionary]];
}
這工作正常,直到我嘗試使用以下方法(通過嵌入式文本視圖)更新工具欄的高度。我在這裏有什麼不對嗎?工具欄高度增加,但背景視圖不縮短高度(我使用SparkInspector進行調試)。似乎很簡單的說我缺少明顯的東西在這裏...
- (void)textViewDidChange:(UITextView *)textView {
if (textView != self.toolbarTextView) {
return;
}
CGFloat currentHeight = self.bounds.size.height;
CGSize size = [textView sizeThatFits:CGSizeMake(textView.frame.size.width, textView.frame.size.height)];
CGFloat determinedHeight = fminf(fmaxf(size.height, TOOLBAR_HEIGHT), MAX_TOOLBAR_HEIGHT);
[self setBounds:CGRectMake(0, 0, self.bounds.size.width, determinedHeight)];
[self setNeedsLayout];
}
另外,如果我查詢的工具欄和其制約因素的背景來看,對方說我已成立了最初不上來的限制?他們確實只顯示視圖控制器的視圖...這對我來說聽起來並不正確......?
非常感謝......
謝謝@Ishan Handa ...這非常有意義......我可以使用您的建議修復它...很多再次感謝... – vikram17000