2017-01-19 22 views
0

コンテキスト動作しない:ポップアップ表示は

を私はテーブルビューが含まれているポップアップビューを持っています。私は、画面の全体の高さよりも小さくなるようにポップアップビューをしたいが、それが持っている行の数でスケーリングしたいと思っている。 (テーブルビューに2行が入っていて、2行に合ってスクロールしない場合、テーブルビューに30行がある場合、画面の高さで最大になり、スクロールが可能になります)。私のUIViewControllerのviewDidLoad

私はする必要があります正確にどのように多くの行を知っている:

ビュー階層

 


    - viewContainer (clear background, whole view) 
    -- viewPopUp (pop up container) 
    --- labelHeader 
    --- tableView 
    --- buttonOK 

 

制約

 


    viewPopUp.centerY = viewContainer.centerY 
    viewPopUp.centerX = viewContainer.centerX 
    viewPopUp.leadingSpaceTo superView = 32 @750 
    viewPopUp.trailingSpaceTo superView = 32 @750 
    viewPopUp.width <= 300 
    viewPopUp.height <= 0.8 * viewContainer.height 

    labelHeader.topSpaceTo superView = 0 
    labelHeader.leadingSpaceTo superView = 0 
    labelHeader.trailingSpaceTo superView = 0 
    labelHeader.bottomSpaceTo tableView = 0 
    labelHeader.height = 33 

    tableView.topSpaceTo labelHeader = 0 
    tableView.leadingSpaceTo superView = 0 
    tableView.trailingSpaceTo superView = 0 
    tableView.bottomSpaceTo buttonOk = 0 
    tableView.height >= 0 
    tableView.height = 0 @200 

    buttonOk.topSpaceTo tableView = 0 
    buttonOK.leadingSpaceTo superView = 0 
    buttonOK.trailingSpaceTo superView = 0 
    buttonOk.bottomSpaceTo superview = 0 
    buttonOK.height = 35 

 

私の質問 rこのtableViewで表現されており、上記のコンテキストで説明したように、この数にtableViewの縮尺を設定するための追加の制約を追加したいと思います。

私はtableView.height = count * rowHeight @500を試しましたが、これはビューを更新しません。私はneedsUpdateConstraintsまたはneedsUpdateLayoutのようなものを呼び出していないのですかどうかはわからないなど

予想通り、それはのtableViewを更新する必要に応じて、私は上記の制約を追加するが、私は、制約の警告を受け、私はそれがプッシュした場合、これが壊れると考えられる場合私はそれが画面の高さに達した後にドロップするように非必須の制約として追加したい理由ですtableView過去の画面のサイズを超えています。

私はこの希望の結果にどのように到達することができますか?

ありがとうございます!

答えて

0

行の高さが常に同じであると仮定すると、テーブルの高さを計算し、ビューの高さに対してチェックし、この値をテーブルビューに追加された参照された高さの制約に設定できます。 コードは次のようになります:

//calculate the height 
var tableHeight = numberOfRows * rowHeight 
if tableheight > maxHeight { 
tableHeight = maxHeight 
} 
self.tableHeightConstraint.constant = tableHeight //this constraint should be a iboutlet 
self.view.layoutIfNeeded() 

それがお役に立てば幸いです。

関連する問題