我在滚动视图中将标签居中时遇到问题。基本上我需要来自一个选项卡的一些用户输入,然后根据数据在另一个选项卡中显示结果。现在我已经设置了一个标签来告诉用户如果用户在没有先插入数据的情况下点击选项卡就插入一些数据。当用户没有插入任何数据并按下结果选项卡时,一切正常。它看起来像这样:
当用户插入一些数据,一直向下滚动,转到第一个选项卡,清除所有数据并再次按下结果选项卡时,就会出现问题。标签不再居中:
我正在使用 Auto Layout with Mixed Approach,所以我有一个 ScrollView ,里面有一个 ContentView 。当显示标签时(即没有插入数据)我不希望视图滚动,所以我正在做的是:
-(void)resultsTabClicked {
if(dataIsInserted) {
myLabel.hidden = YES;
self.contentViewHeight.constant = resultsViewHeight;
self.scrollView.contentSize = CGSizeMake(320, resultsViewHeight);
}
else {
myLabel.hidden = NO;
self.contentViewHeight.constant = 411;
self.scrollView.contentSize = CGSizeMake(320, 411);
}
}
它几乎可以工作,因为当标签位于错误的位置并且按下第一个选项卡并且用户仍然没有插入任何数据并再次按下第二个选项卡时,瞧!标签在正确的位置。
当要显示结果时,我也遇到了同样的情况。根据数据,结果视图高度会发生变化,当用户向下滚动时,转到第一个选项卡,更改一些数据并返回结果选项卡,结果视图恰好小于前一个结果视图,然后结果视图的顶部就像被切断了。当用户转到第一个选项卡时,不做任何更改并返回结果选项卡,它又是完美的。有没有人有任何建议如何在第一次更新视图时使布局完美?