1

私はこれについてグーグルで調べてきましたが、私が持っている質問に対する答えを特定できないようです。

私はアプリを書いていますが、子 UIView の垂直方向のスペースで、向きに関係なく、事前に値をハードコーディングせずに、デバイスの高さまたは親デバイスの回転を維持したいと考えています。

私のレイアウトの構造は次のとおりです。

ViewContainer
  UIView
    UIScrollView
      UIView (Content View)

具体的には、コンテンツ ビューの垂直方向のスペースを、現在実行されているデバイス/向きのネイティブの高さに最初に設定し、デバイスが回転すると、垂直方向のスペースを新しい垂直高さ。UIScrollView は、水平方向にのみパンするために使用されます。

ビューの描画には Quartz を使用します。経由で初期の高さを設定しintrinsicContentSizeますか? その場合、親ビューを照会するにはどうすればよいですか?

self.superviewコンテンツ ビュー内で使用しようとしましたが、うまくいきません。変更が発生したことを検出するにはどうすればよいですか?変更が発生した後、新しい Y 解像度を取得して適用するにはどうすればよいですか? また、必要がなければ自動レイアウトを無効にしたくありません。

はっきりさせていない場合、私が欲しいもののビジュアルは次のとおりです

4

1 に答える 1

0

同じビュー階層を持つアプリがあります。

あなたが望むものは、次の制約を持つ純粋な AutoLayout で達成可能です。ここには垂直方向の制約のみが含まれています。

view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|[scrollView]|", options: .allZeros, metrics: nil, views: ["scrollView" : scrollView]))

scrollView.addConstraint(NSLayoutConstraint(item: contentView, attribute: .Height, relatedBy: .Equal, toItem: scrollView, attribute: .Height, multiplier: 1.0, constant: 0.0))
scrollView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|[contentView]|", options: .allZeros, metrics: nil, views: ["contentView" : contentView]))

contentView の高さは常に正しいため、向きの変更を引き続き通知するかどうかはわかりません。

于 2015-05-12T05:38:17.593 に答える