私はアプリケーションでスクロールビューを持っており、ストーリーボードで初期化されていますが、フレームを変更しようとしています。すべてがうまくいくように見えますが、フレームとコンテンツのサイズが設定されてからわずかな時間が経過しても、メソッドが返された後は、それらは異なります。ここでは、コードされています。期待通りUIScrollViewは不思議なようにフレームとコンテンツのサイズを変更します
CGFloat inputHeight = inputView.frame.size.height;
originalContentHeight = self.scrollableContentView.frame.size.height;
NSLog(@"%f", self.scrollableContentView.frame.size.height-inputHeight);
[self.scrollableContentView setFrame:CGRectMake(self.scrollableContentView.frame.origin.x, self.scrollableContentView.frame.origin.y, self.scrollableContentView.frame.size.width, self.scrollableContentView.frame.size.height-inputHeight)];
NSLog(@"%f", self.scrollableContentView.frame.size.height);
NSLog(@"%@", self.scrollableContentView);
これらのログの出力がすべてです、それは次のようになります。
<UIScrollView: 0x808de00; frame = (0 0; 320 81); ... >
しかし、私は別のメソッドにブレークポイントを設定している場合、呼び出された時点で、さらに
<UIScrollView: 0x808de00; frame = (0 0; 320 416); ... >
、などのコンテンツサイズの変更:
scrollViewをログに記録することは、この示し(width=320, height=504)
への値の両方は、ビューが最初にレイアウトされたときに、彼らが持っている値に自動的に戻すように見えます。私は、スクロールビューのgetterとsetterにブレークポイントを設定しており、予期しないアクセスが見つからないため、変更が内部的に発生していると判断しました。これは正当な結論ですか?何がうまくいかないでしょうか?
自動調整スプリングを調整可能な高さに設定できますか? – Jamie
どこにあるのでしょうか? – Jumhyn
これは自動レイアウトのためです。オフにするか、フレームを設定するのではなく、制約を調整してスクロールビューのサイズを変更してください。 – rdelmar