2

以下のリンクにあるUIScrollViewを使用した自動レイアウトの実装に関するAppleのガイドラインに従っています。 http://developer.apple.com/library/ios/#releasenotes/General/RN-iOSSDK-6_0/index.html

「または、ビューサブツリーを作成してスクロールビューに移動し、制約を設定し、systemLayoutSizeFittingSize:メソッド(UILayoutFittingCompressedSizeオプションを使用)を呼び出して、コンテンツビューとスクロールビューのcontentSizeプロパティ。」

私の問題は、私が電話するときです

CGSize newSize = [self.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];

newSizeの幅は320を超えています。newSizeの幅が320になるように制約して、関数systemLayoutSizeFittingSizeがすべてのビューに合うように大きな高さを返すようにするにはどうすればよいですか。UILayoutFittingCompressedSizeの代わりに使用できる別の引数はありますか?

ありがとう!

編集:contentViewのUILabelサブビューがあり、そのnumberOfLinesは0に設定されています。ただし、このUILabelでsizeThatFitsを呼び出すと、320より大きい幅が返されます。その結果、self.contentViewメソッド呼び出しはUILabelをサポートするのに十分な大きさのnewSize。

したがって、問題は私のUILabelに起因すると思います。sizeToFitが呼び出されたときにUILabelが320未満の幅を返すようにするには、テキストの本文に合わせて高さのみがスケーリングされるようにするにはどうすればよいですか?

4

1 に答える 1

1

解決策を見つけました。

UILabelのpreferredMaxLayoutWidthというプロパティが機能しました。これを値320のUILabelに適用しましたが、self.contentViewメソッドは320を超える幅を返しません。

UILabel sizeThatFitsメソッドはpreferredMaxLayoutWidthを考慮しないことに注意してください。これは、返されるCGSizeの幅がprefferedMaxLayoutWidthよりも大きいためです。

于 2013-01-04T23:44:09.650 に答える