2017-02-10 4 views
0

私はswiftアプリをデザインしています。写真、地図、コンテンツはすべてUITableViewヘッダーに表示されています。iphone 5とiphone 6でアプリを実行しているときに、制約によってレイアウトが異なるのはなぜですか?

私はiphone 5でアプリを実行すると、それは次のようになります。

enter image description here

黄色のフィールドには、次の制約があり、テキストビューである:

enter image description here

と:

enter image description here

私はiphone 6上でそれを実行したときにこれは、しかし、iphone 5に正常に見える

、私は以下を参照してください。

enter image description here

これら二つの見解が異なる理由を私は理解していません。基本的にはデータとヘッダビューを(例えば、ユーザ名、テキスト、写真を埋める)移入

defineHeaderView() 

さて、私のコードでは、viewDidLoad()に私は、メソッドの呼び出しを持っています。

私もこのコードのブロックしてい

storyboard

override func viewDidLayoutSubviews() { 
    super.viewDidLayoutSubviews() 
    sizeHeaderToFit() 
} 

func sizeHeaderToFit() { 
    let headerView = myTable.tableHeaderView! 

    headerView.setNeedsLayout() 
    headerView.layoutIfNeeded() 

    let height = headerView.systemLayoutSizeFitting(UILayoutFittingCompressedSize).height 
    var frame = headerView.frame 
    frame.size.height = height 
    headerView.frame = frame 

    myTable.tableHeaderView = headerView 
} 

を私はUITableView内部のビューとしてheaderviewを定義します。

enter image description here

ビューを行い、なぜあなたは私を説明することができますどちらの画面でも違いますか?ここでは、より優れた洞察力を与えること

は、他の制約です:

地図:

enter image description here

、ここで背景写真:

enter image description here

が持っています以下の制約:

enter image description here

+0

私はあなたのimageViewsに問題があると推測しています。 iPhone 5の画面はより薄く、画像や拘束のサイズに応じて(また、clipSubviewsがtrue/falseに設定されている場合)、画像は大きく異なって見えます。 – PeejWeej

+0

異なるデバイスのビュー階層をデバッグして、実際のフレーム/制約が何であるかを確認してください。 – PeejWeej

+0

ビュー名やその他の制約に関する情報が不十分です。だから、これは単なる仮定です: ビューの高さ(黄色のもの)の制約は "より大きいか等しいか"によって関連しています。 2番目の制約に従えば、ビューの上辺は親のトップの644ポイント下にある必要があります。これは静的な値です。したがって、さまざまなサイズ(高さ)のデバイスでは、視界は高さが伸びます。 –

答えて

0

あなたのUILabelの上限を削除してください。

+0

上限を取り除くと、私の「UILabel」が画面の一番上に表示されます... – user3766930

+2

これは効果的な答えかどうかわかりませんが、説明を追加すると*より良い*回答になります*なぜ*これで問題が解決されますか? – dfd

+0

元の質問に制約に関する詳細を追加しました – user3766930

関連する問題