私はここでひどく明白な何かを見逃しているに違いありませんが、これはDAYSの間私を苛立たせている問題でした。
xcode 4.5のiOSプロジェクトでは、XIBにいくつかのラベルがありUIScrollView
ますUIView
。各ラベルはビューと同じ幅で、それぞれが次のラベルより約20ピクセル上にあります。場合によっては、ラベルの1つに情報がないため、ラベルが非表示に設定され、その下のラベルが上に移動して空白スペースを占めることになります。
問題は、ビューで自動レイアウトが「オフ」にチェックされている場合、ラベルはUIScrollView
スクロールしなくなりますが、正確に上に移動することです。オンの場合、ラベルは何があってもまったく移動しません。
コードは次のとおりです...基本的には、クイック関数を使用して、各ラベルを非表示のラベルの高さだけ上に移動します。
[self moveObjectBy: self.festNameLabel moveByY:-(yearsLabel.frame.size.height-2)];
// this just quickly moves a label.
- (void)moveObjectBy:(UIView *)lbl moveByY:(int)byHeight {
CGRect newFrame = lbl.frame;
NSLog(@"%f, %d", newFrame.origin.y, byHeight);
newFrame.origin.y += byHeight; //yearsLabel.frame.size.height;
lbl.frame = newFrame;
}
実行すると、NSLog
Yが移動したことが表示されますが、画面上では移動しません。垂直方向のスペース制約に関係していると確信していますが、制約を削除したり、ビューの上部からスペース以外に変更したりすることはできません。私が言ったように、私は何かが欠けていると確信しています、しかし私は私がすることを知っているすべてを使い果たしました...