2017-10-18 11 views
1

私は、navigationControllerの内部にカスタムセルを持つ単純なUICollectionViewを持っています。何らかの理由でviewControllerをプッシュすると、collectionViewセルはトランジション中にレイアウトを変更します。swift:uicollectionviewは、遷移中のセルの内容オフセットを変更します。

viewControllerの移行時にuicollectionviewの一般的な動作がありますか?例えば、ので:ラベルは、このような問題を持っていない

When back button was clicked グリーン色

collectionView

から EasyPeasyポッド

collectionView.easy.layout([ 
    Top(), 
    Right(), 
    Width(view.frame.width), 
    Bottom(10).to(button), 
]) 

button.easy.layout([ 
    Center(), 
    Height(60), 
    Width(300), 
]) 
+0

私たちを見せるための任意のコードがありますか? –

+0

これらの制約を使って何をしようとしているのか分かりにくいですが、コレクションビューの高さを使用していません。これは、ボタンによって計算されていると思います。それは緑色のcollectionviewが10px(多分?)に設定されているように見えます。いつあなたのコードに制約を設定しますか?その青いボックスは何ですか、そしてその要素の制約ですか?あなたのオートレイアウトに何らかの問題があるような気がします。 –

+0

@MartinBorstrand UICollectionViewCellのbackgroundColorは青です。 viewDidLoadで制約を設定します。ご迷惑をおかけして申し訳ありません。バックセルの移行中のように見える – Dauren

答えて

0

を使用して自動レイアウトを設定する新しいビューコントローラ

navigationController?.pushViewController(controller, animated: true) 

の追加I私はあなたの問題を発見したと思うし、それはあなたのAppDelegateにあります。あなたのナビゲーションコントローラにfalseに設定されているisTranslucentというプロパティは、このまれな問題を虫歯にしているようです。上のように、ビューコントローラのビューの上に半透明のナビゲーションバーが表示されます。非半透明のナビゲーションバーは、あなたのビューコントローラのビューをプッシュダウンするか、言い換えれば、それがその下に収まるようにリゼージします。しかし、なぜそれがそうであるようにcollectionviewアニメーションは、私は実際に明確な答えを与えることができないものです。他の誰かがそれを行う可能性がありますか?

あなたのナビゲーションバーを半透明に保つには、viewController内の別のプロパティを'extendedLayoutIncluedsOpaqueBars 'に設定することができます。

だから、このようにしてください。あなたのAppDelegateで:

window = UIWindow(frame: UIScreen.main.bounds) 
window!.makeKeyAndVisible() 
let controller = TestingNavigationController() 
let navigation = UINavigationController(rootViewController: controller) 
window!.rootViewController = navigation 

let navigationBarAppereance = UINavigationBar.appearance() 
navigationBarAppereance.isTranslucent = false 

次に、あなたのビューコントローラのviewDidLoadメソッドでこの行

extendedLayoutIncludesOpaqueBars = true 

これはあなたの問題を解決することを願っを追加! :)

Apple Documentation about extendedLayoutIncludesOpaqueBars

+0

@Daurenあなたは私の答えに反応しますか? –

関連する問題