2016-08-12 8 views
0

Search offiOSのは、私がここで何をしたいのか、ナビゲーションバー

Search

@IBAction func searchOn() { 
    self.searchController.searchResultsUpdater = self 
    self.searchController.hidesNavigationBarDuringPresentation = true 
    self.searchController.dimsBackgroundDuringPresentation = false 
    self.definesPresentationContext = true 
    self.present(searchController, animated: true, completion: nil) 
} 

を隠した後UICollectionViewインセットを調整し、今、彼らはあるので、正しい位置に検索バーと場所細胞を提示するとき、ナビゲーションバーを非表示にすることです検索バーの下に移動します。

私が考えることができた解決策の1つは、ナビゲーションバーが非表示になったときに移動したときと同じ距離だけ下方にUIEdgeInsetsMakeをアニメーション化することです。しかし問題は、ナビゲーションと検索バーを切り替える間にアニメーションの時間がわからないことです。

誰でもこれを理解する手助けはできますか?

少なくとも、ナビゲーションバーと検索バーを切り替えるアニメーションの時間を取得するのに役立ちます。

答えて

0

このコードをviewDidLoad()メソッドに書き込みます。

let flow: UICollectionViewFlowLayout = CollectionView.collectionViewLayout as! UICollectionViewFlowLayout 
     flow.sectionInset = UIEdgeInsetsMake(70, 0, 0, 0) 
+0

と言います。とにかくセルは検索バーの下にあり続けます – KK7

+0

内側のsearchOn()funcの最後の行の上に書いてください。 –

0

もう一つの方法は、uが負も値例えば

を与えることができ、上下に移動するために必要にcontentOffsetを設定してみてくださいposition.and y位置を変更することである

//without animation 
    collectionview.contentOffset = CGPoint(x: 0, y: 100); 
    //with animation 
    collectionview.setContentOffset(CGPoint(x: 0, y: 100), animated: true) 

と同様にsectionInsetを利用することもできます。これは、Chirag Patelが言及したように、

+0

私はこれが自分の問題を解決すると思っていました。少なくとも、現在はセルが表示されている場所は正しいですが、setContentOffsetを使っても、アニメーション化されたセルは飛び続けています。 – KK7

+0

ok、繰り返し設定する必要はありません。検索コントロールが表示され、すぐにリセットされたらすぐに設定してください。検索コントロールの解除時にゼロポイントを設定することを意味します。 –

+0

これは明らかですが、そうではありません。間にアニメーションのように、ナビゲーションバーが消えて、オフセットを変更するのが同じではないようです。ナビゲーションは、オフセットが変化しているときよりも速くコンテンツを移動します。私は言うことができません。しかし、この「切り換え」プロセスでは、細胞は同じ場所にとどまるわけではありません(これは達成したいことです)。彼らは、検索バーが現れるまで、わずかなポイントを上下に微妙に傾けている。 – KK7

関連する問題