2017-07-10 29 views
1

開発中のアプリケーションの1つで、テーブルのような構造の下に作成する必要があります。私はUITableViewを使用してこのテーブルを作成しています&画面の向きに基づいてテーブルの幅を変更する必要があります。私は列幅の制約を設定しました&私はのviewDidLoad()の画面幅を使って値を割り当てます。UITableViewCell画面幅に基づいた列幅の変更IOS Swift

しかし、画面の向きが変わったときにこれらの制約をどのように再調整するかわかりません。私は、& &という表のビューの制約を再計算しました。ただし、画面の向きが変更されたときにテーブルの列幅をリセットするために、テーブルビューを作成することができません。私はIOSプラットフォームに新しいですし、どんな助けも大歓迎です。

HDR_parName/HDR_parValue/HDR_minValue/HDR_maxValue

PARA1/VALUE1/minvalue1/maxvalue1

PARA2 /値2/minvalue2/maxvalue2

+0

'tableview''幅の制約を追加しましたか? – Subramanian

+0

はい、ストーリーボードの幅の制約をパラメータテーブルView.leading = leadingMargin + 10およびtrailingMargin =パラメータテーブルView.trailing + 10 –

+0

として設定しました。ポートレートまたはランドスケープモードのようにORIENTATIONの幅を変更したとしますか?しかし、あなたのコメントでは、それはあなたがセルのインデックス位置の幅のベースを変更するように思えますか? **正確に**あなたは何が必要ですか? –

答えて

0
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { 
    super.viewWillTransitionToSize(size, withTransitionCoordinator: coordinator) 

    let animationHandler: ((UIViewControllerTransitionCoordinatorContext) -> Void) = { [weak self] (context) in 
     // This block will be called several times during rotation, 
     // so if you want your tableView change more smooth reload it here too. 
     self?.tableView.reloadData() 
    } 

    let completionHandler: ((UIViewControllerTransitionCoordinatorContext) -> Void) = { [weak self] (context) in 
     // This block will be called when rotation will be completed 
     self?.tableView.reloadData() 
    } 

    coordinator.animateAlongsideTransition(animationHandler, completion: completionHandler) 

} 

次に、tableViewのフレームサイズに従って要素サイズを設定できるtableViewデータソースとデリゲートメソッドが呼び出されます。

+0

それは働いた!!、感謝:-) –

0

それはあなたが何であるか、非常にシンプルなソリューションですやっていることが間違っている 行幅として全幅を使用するとします。

セル幅に制約を設定する必要はなく、末尾の制約をテーブルビューに設定する必要があります。それはすべてを扱うでしょう。

あなたはまだあなたがまだ問題に直面しているなら、私に知らせて

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { 
    self.view.layoutIfNeeded() 
} 

を試し、その後、同様の問題に直面した場合。

+0

応答Devのおかげで。画面の幅に基づいてテーブルビューのセル内の列の幅を変更する必要があります。例えば、最初の列の幅は画面幅の10%程度、2番目の列幅は画面幅の20%などにする必要があります。向きが変わった後に画面の幅が変わると、テーブルビューのレイアウトを変更するにはどうすればいいですか? –

+0

上記のソリューションを適用して、回転後にビューを更新します。 –

+0

しかし、第1の20%第2位に10%のようなセル幅が必要な場合は、UICOllectionviewを使用することをお勧めします。それは簡単にUICOllectionview –

関連する問題