問題タブ [uicollectionviewlayout]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - デバイスを横向きに回転するときの UICollectionViewFlowLayout サイズの警告
UICollectionView を使用して、全画面 (ステータス バーとナビゲーション バーを除く) をカバーするセルを表示しています。セル サイズは次のように設定されself.collectionView.bounds.size
ます。
これにより、各デバイスの正しいサイズが設定されます。各セルにはインセットがないように定義されており、レイアウトにはヘッダーまたはフッターがありません。ただし、縦向きから横向きに回転すると、次の「苦情」が発生します。
このエラーは理解できましたが、セルのサイズをリセットし、ローテーション トランジションに組み込まれたフロー レイアウトを使用します。
セルはランドスケープで正しくレンダリングされます。
フロー レイアウトは古いセル サイズを認識しているように見えますが (高すぎるため、問題が発生します)、新しいセル サイズ セットを読み取り/レンダリングしますdidRotateFromInterfaceOrientation
。
苦情を取り除く方法はありますか?
デバイスの回転遷移中に、(現在の画面サイズに対して) 正しいターゲット画面サイズにアクセスできる別のフックを見つけようとしましたが、うまくいきませんでした。デバッグ出力は、苦情が のwillRotateToInterfaceOrientation
前後に発生したことを示していdidRotateFromInterfaceOrientation
ます。
また、明らかなことを確認しました。セルの高さを横長の画面の高さよりも小さい固定サイズに設定すると、苦情は発生しません。また、横向きから縦向きに戻すときも苦情は発生しません。
すべてが正常に実行され、正しくレンダリングされます。しかし、この苦情は私たちを心配させます。他にアイデアや解決策はありますか?
ios - UICollectionViewに画像を表示する-画像間の垂直方向の間隔を固定する方法は?
UICollectionViewを使用して、iPhoneアプリ(iOS6)で画像のグリッドを表示しています。
UICollectionViewに垂直スクロールを使用していますが、画像はすべて固定幅でさまざまな高さです。画像の幅は、iPhoneで3列の画像が表示されるように設定されています。これは問題なく機能し、画像はグリッドビューで表示されます。
ただし、私の画像の高さはさまざまであるため、次の画像(HTMLで作成されたモックアップ)に示すように、列内の画像間の垂直方向の間隔が異なり、見栄えがよくありません。
代わりに、列内の画像間の垂直方向の間隔が同じである、より流動的な流れを実現したいと思います。次のモックアップは、どのように機能させたいかを示しています。
これを解決する方法のアイデアはありますか?
また、おまけの質問として、アプリがiOS6用に構築されていない場合に同じ問題を解決する方法を知っている人はいますか(UICollectionViewはiOS6でのみ利用可能であるため)。サードパーティのコンポーネントを使用するか、標準のiOSコントロールで解決します。
ios - 2 つの UICollectionViewCells を入れ替えます
2 つのテーブル セルを交換しようとしています。したがって、レイアウトが次のような場合
123 456 789
セル 3 をセル 5 にドラッグすると、
125 436 789
しかし、セル7まで持ち上げずにドラッグし続けると、
127 456 389
これをすべてアニメーション化します。LXReorderableCollectionViewFlowLayoutの基本的なコードにいくつかの編集を加えましたが、まだいくつかの問題があります。セルを移動している間と同様に、別のセルがコピーのように見え、離すまでそれに従います。セルが完全に複製される場合があります。私のコレクション ビューでは、UICollectionViewCell サブクラスを 1 つ使用していますが、情報を含むセルと空のセルの 2 つの外観があります。
ここにコードがあります
LXReorderableCollectionViewFlowLayout.h - http://pastie.org/7188891 LXReorderableCollectionViewFlowLayout.m - http://pastie.org/7188886
(投稿するには長すぎるため、ここにコードを投稿できません)
ios - ヘッダー ビュー全体を UICollectionView に設定するにはどうすればよいですか?
UITableViewController の setTableHeader と同じように、ヘッダーをコレクション ビューに設定したいと考えています。
コレクション ビューで各セクションのヘッダーを設定する方法は見つかりましたが、ヘッダー全体のヘッダー ビューを設定する方法が見つかりませんでした。
Apple の UICollectionViewLayout のリファレンスには、「補足ビューはデータを表示しますが、セルとは異なります。セルとは異なり、補足ビューはユーザーが選択できません。代わりに、補足ビューを使用して、特定のセクションまたは全体のヘッダー ビューやフッター ビューなどを実装します。コレクション ビュー。補助ビューはオプションであり、それらの使用と配置はレイアウト オブジェクトによって定義されます。」ですが、コレクション ビュー全体のヘッダー ビューを実装する方法がわかりません。
最初のセクションだけセクションヘッダービューの長方形を作ることでこれを実装しようとしましたが、tableHeader のそれとは異なりました。
テーブル ビューでコンテンツ オフセットをヘッダーの下に設定すると、いくつかの要素が存在するにもかかわらず、ヘッダーが非表示になるようにコンテンツ サイズが自動的に拡張されます。
ただし、コレクション ビューでは、コンテンツ オフセットの変更は、スクロールを行うのに十分な数の要素が存在する場合にのみ正常に機能します。
いくつかの要素が存在する場合にコンテンツ サイズを動的に拡張しようとしましたが、うまく動作しないようです...
ios - UICollectionViewFlowLayoutの最小InteritemSpacingのバグ?
いろいろいじった後、UICollectionViewFlowLayout のスペーシング コードにバグがあるのではないかと疑い始めました。
問題は単純です。画面に表示したいボタンが 5 つあり、ボタン間の間隔を 1 pt (Retina ディスプレイでは 2 ピクセル) にしたいのです。これを実現するために、minimumInteritemSpacing を 1.0 に設定し、セル幅を 159.5 pt に設定して、2 つのセルの合計が 319 pt になり、スペースに 1 つのポイントが残るようにしました。最小値を 1.0 に保つように指示されているにもかかわらず、フロー レイアウトによって間隔が 0.5 pt になるため、3 番目のボタンをビューの全幅にしたい場合に問題が発生します。(スクリーンショット 1 を参照)
間隔を設定するためのコードは、
セルのサイジング
一方、3 番目のボタンを全幅にしないと、間隔は期待どおりに動作しますが、別の行のアイテム間の間隔には影響しません。(スクリーンショット 2)
CollectionView、CollectionViewCell、および UILabel がストーリーボードに設定されており、スクリーンショットに表示されているラベルのフレームがセルの幅よりも小さいことを既に確認しており、ラベルを完全に削除しようとしたことにも注意してください。同じ結果で。
フロー レイアウト コードのバグでない限り、なぜこれが起こっているのかわかりません。これをバグとして送信する前に、ここでサニティ チェックを探していました。
objective-c - UICollectionViewCell のボタン
と呼ばれるUIButton
のインスタンスにを追加しようとしています。のサブクラスにアウトレットを作成し、Interface Builder にアクションを追加しましたが、正しく動作しないようです。UICollectionViewCell
MyCollectionViewCell
UIButton
以前に を実装した人UIButton
はUICollectionViewcell
いますか?これのサンプル コードはありますか??
ありがとうございました
ios6 - UICollectionViewレイアウトの非常に大きなデータセットをハッシュする最も速い方法は何ですか...NSIndexPathが遅すぎます
カスタムレイアウトの大きなデータセット(> 2000アイテム)を持つUICollectionViewControllerがあります。セクションを使用すると、スクロールパフォーマンスが非常に不安定になりました。Instrumentsといくつかのテストを使用して、これはレイアウトのルックアップによるものであると判断しました(layoutAttributesForElementsInRect:
)。レイアウト属性をにキャッシュしprepareLayout
、ここでそのように検索します。これは、私が知っている最速の方法です。
私は、CPU時間の約25%がこれを列挙するのに費やされ、主にに費やされていることを発見しました[NSIndexPath isEqual:]
。したがって、これらの値をハッシュするためのより高速な方法が必要です。
セクション化されたUICollectionViewFlowLayoutで同じデータを使用してクロステストを実行し、スムーズだったため、可能である必要があります。
animation - IOS: 向きを変更するときにスライドするように UICollectionViewCells をアニメーション化する
UICollectionViewFlowLayout
向きの変更により位置が変わると、セルがスライドするようにオーバーライドしようとしています。私が現在持っているのは、縦向きで 1 行あたり 3 つのセル、横向きで 1 行あたり 4 つのセルですが、方向を変更したときに得られる唯一のアニメーションは、デフォルトのフェードインです。
私は使用を検討してきましたがperformBatchUpdates
、答えが見つかる場所ではないと確信しています。
私はまた、私が答えを見つける場所だと思うとをlayoutAttributesForElementInRect
調べてきました。layoutAttributesForItemAtIndexPath
セルの新しい属性を作成する必要があるかどうか (previousCenter
おそらく)、それを新しいアニメーションの開始点として使用performBatchUpdates
するか、新しいフレームを変更する値として使用する必要があるかどうかはわかりません。
記録のために、私が見つけたすべてのアニメーションの質問は、私がやりたいことではないアイテムの挿入と削除のためにアニメーションを変更する方法に関するものでした.
ios - 選択時にUICollectionViewセルをアニメーション化する
に基本的なグリッドがありUICollectionView
ます。これは、を使用した単純な2列、複数行のレイアウトUICollectionViewDelegateFlowLayout
です。セルを選択したら、背景を暗くして、セルを画面の中央にフロートさせてから、選択したセルに基づいたワークフローを作成します。私はかなり新しいですUICollectionViews
、そして私はこれについて行くための最良の方法がわかりません。
UICollectionView
セルが選択されたときののカスタムレイアウトが必要ですか?
または、新しいレイアウトを作成せずに、選択したセルをアニメーション化する方法はありますか?
誰かが私を正しい方向に向かわせることができれば、それを実行する方法を研究するのは良いことだと思います。
uicollectionview - iOS UICollectionViewController 中央のセルが表示されない。しかし、それらをクリックすることができます
カスタムを作成しましたUICollectionViewController
。
表示したいアルバムが 2 つあります。それぞれの機能は少し異なりますが、ビューは基本的に同じです (カスタム セル サイズなど)。このベースから、私が求めている特定の動作でViewController
カスタマイズされた 2 を継承しています。UICollectionViewController
遺産は
UICollectionViewController -> GalleyViewController (私の基本クラス) -> CameraAlbumViewController。
UICollectionViewController -> GalleyViewController (私の基本クラス) -> DifferentAlbumViewController
何らかの理由で、画面に中央のセルが表示されませんが、クリックすることはできます。セルのサイズを変更しようとしましたが、3 つのセルが表示されますが、セルの境界がオフになっています (セル間で選択でき、デリゲート メソッドが呼び出されています)。
継承が間違っているのではないかと考えて(おそらく基本クラスに何かが欠けている)、 の最も基本的な使用方法で新しいプロジェクトを作成し、UICollectionViewController
いくつかのチュートリアルに従いました。
まだ中央の細胞が見えない
このことから、おそらく絵コンテの何かが間違っていると思います。
私のコードはこれです:
シミュレーターからのストーリー ボード、カメラ アルバムのスクリーンショット