2017-08-01 10 views
0

私は15 x 15グリッドを形成するコレクションビューを持っています。その高さと幅を、それが含まれているビューの高さの0.5(または何倍)に設定します。私はストーリーボードでこれを行い、アスペクト比を1:1に設定しました。プログラムでコレクションビューのサイズを設定する方法

enter image description here

私の問題は、私は横に画面を回転させたときに、グリッドがもはやないことである私は、例えば、ストーリーボードに直接高さを設定することができ

15×15

enter image description here 300 x 300ですが、別のデバイスに合わせて問題が発生します。

答えて

0

横長モードの高さが縦長のため、この問題があります。あなたがUICollectionViewの幅&高さの制約を設定するのであれば、superviewに(いくつかの乗数と)等しくなるように、自動的にデバイスを回転するとき、それにサイズを変更しています

あなたはそれがコードで接続幅&高アウトレットとセット充当値をだ何ができますかviewDidLoad方法

0

スーパービューに関して、コレクションビューに等幅と等高さの制約を追加できます。下の画像に示すように、制約乗数を0.5に編集してください。 enter image description here

+0

私は恐れています。また、私は1:1のアスペクト比を目指しています –

0

にすぎ

override func viewWillLayoutSubviews() { 
     guard let flowLayout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout else { 
      super.viewWillLayoutSubviews() 
      return 
     } 
     flowLayout.invalidateLayout() 
     super.viewWillLayoutSubviews() 
    } 
これらの行を追加します。この

extension MYViewController: UICollectionViewDelegateFlowLayout { 
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { 
     return CGSize(width: collectionView.frame.width/15, height: collectionView.frame.height/15) 
    } 
} 

をお試しください

+0

私はこれを試して、動作させることができませんでした –

+0

上記の更新されたコードを試してください –

関連する問題