2016-03-27 11 views
0

下の写真のように、異なるiPhoneサイズ(4インチ、4.7インチ、5.5インチ)では、青色と赤色のビューは同じ相対位置にありますが、スクロールしてさらに情報を表示するためのスペースを増やすことができます。これを行うにはどのように?異なるiPhoneサイズで相対的に同じ場所でビュー/オブジェクトを固定する方法は?

私は、スクロールビューで、このような実装方法に困惑している。あなたの助けのおかげで非常に多くを! enter image description here

+0

この情報のみを使用して、私は現在の画面の高さを見つけて、手動で位置を計算することをお勧めします – Azat

答えて

0

@Azatによって示唆されるように、私たちは「UIScreen.mainScreenを(使用することができます) .bounds.height "を実行時に異なるiPhoneのサイズに基づいて取得するため、相対的な固定位置で動的にビューをレイアウトすることができます。上記の例の例:

。UIScreen.mainScreenを()
  • bounds.height我々はスタックビューを必要とするトップ距離を計算:
    1. シーンの高さを計算する一方のエンティティとしてそれらを作るために、スタックビューに赤と青の景色を置きます(赤と青のビューを一緒に組み合わせたもの)をシーンの上端から外して表示します。
    2. 最初に表示されるアプリ起動インタフェースを除いて、さらに多くのものを見つけるためにスクロールし、オレンジ色の追加ビューを追加します
    3. となり、オレンジ色のビューをシーンのすぐ下に置き、その下端をスクロールビューの下端から20ポイントにします。
    4. をストーリーボードに配置し、スクロールビューをビューの端に固定し、スタックとオレンジ色のビューを先頭に配置し、ビューに後続させて、赤、青、オレンジのビューの高さを120ポイントに固定します(好きな高さに変更できます)

    は1,2,3,4,5のために、我々は、関数内のコードを書くことができるなど、のviewDidLoadでそれを呼び出す:

    func viewLayout() { 
        let bottomMargin:CGFloat = 20.0 
        let sceneHeight = UIScreen.mainScreen().bounds.height 
        let topDistance = sceneHeight - stackView.frame.height - bottomMargin 
        let metric = ["topDistance": topDistance, "bottomMargin": 20.0] 
        let views = ["stackView": stackView, "orangeView": orangeView] 
    
        NSLayoutConstraint.activateConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-topDistance-[stackView]-bottomMargin-[orangeView]-bottomMargin-|", options: NSLayoutFormatOptions(rawValue: 0), metrics: metric, views: views)) 
        } 
    

    ので、あなたが使用してどのようなiPhoneサイズ、スタック表示常に下から20ポイント離れたシーンの下部にレイアウトし、下にスクロールしてオレンジ色のビューを表示します。

  • 関連する問題