自動レイアウトが完了した後にUICollectionViewCell
にあるCALayer
にフレーム、コーナーの半径およびその他の操作を設定したいというこの問題が発生しました。しかし、私の驚いたことに、セルのサブビューとcontentViewは(0.0, 0.0, 0.0, 0.0)
と表示され、layoutSubviews()
がセルのサブクラスで呼び出されました。私は最終的にこの問題の解決策を見つけ出しました。同様の問題に直面している場合は誰もがこれを見ることができるように、投稿しています。UICollectionViewCellのサブビューの幅と高さがゼロです
1
A
答えて
1
私は今一週間以上頭を叩いていましたが、ついに!
がcollectionView
を表示しようとしているセルのcontentView
のための新しいレイアウトサイクルをUICollectionViewDelegate
のcollectionView(_:willDisplay:forItemAt:)
機能を実装し、トリガ:これは私のために完全に働いたものです。
スウィフト:
func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {
cell.contentView.setNeedsLayout()
cell.contentView.layoutIfNeeded()
}
のObjective-C:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
[cell.contentView setNeedsLayout];
[cell.contentView layoutIfNeeded];
}
これは非常に面倒な操作のように見えるかもしれないが、すべての時間は、コレクションビューは、新しいセルを挿入し、自動レイアウトを適用しますセルのframe
は、(layoutSubviews()
で観察されるように)初期レイアウトサイクル後に通常(0.0, 0.0, 0.0, 0.0)
であり、セルが画面上に表示される直前にレイアウトが手動でトリガされた場合、layoutSubviews()
にあるサブビューのframe
は、自動レイアウトの完了後に期待しているものです。
セル自体だけでなくcontentView
で自動レイアウトがトリガーされていることを確認してください。この手動トリガは煩わしすぎるように見えるかもしれませんが、私が得意なものです。
関連する問題
- 1. CGSize幅と高さがゼロ
- 2. AndroidのRelativeLayoutで表示幅と高さが常にゼロです
- 3. UICollectionViewCellとUICollectionViewの等高さ
- 4. UICollectionViewCell動的な幅と固定された高さ
- 5. 動的に追加されたTextViewの幅と高さはゼロです
- 6. 動的UICollectionViewCell幅
- 7. UICollectionViewCellのサブビューとしてのUIScrollView - スーパービューにタップを渡します
- 8. CSSの幅が未知の高さと同じ高さ
- 9. オプションメニューの幅と高さ?
- 10. AS3 - 高さと幅のランダムスワッピングビットマップオブジェクト
- 11. PopupWindowの幅と高さ
- 12. WatchViewStubの幅と高さ
- 13. キャンバスの幅と高さ - webview
- 14. tkinterボタンの高さと幅
- 15. QPainterの幅と高さ
- 16. デバイス幅とデバイスの高さ
- 17. モダルの高さと幅
- 18. キャンバスの高さと幅
- 19. JQgridの高さと幅
- 20. Youtubeの幅と高さ
- 21. UIViewの幅と高さが逆転
- 22. setBound幅と高さ
- 23. 画像のソースを変更すると、最初のクリックで幅/高さがゼロになります
- 24. どのようにUIStackViewで複数の幅と高さのサブビューを表示できますか
- 25. ナビゲーションバーとタブバーの間のスペースの高さが50%のサブビュー
- 26. 親の高さの70%の高さで、自動モーションの幅が
- 27. Autolayout - サブビューがテキストビューの場合、スーパービューの高さをサブビューの高さ+定数にします
- 28. HTMLの長さがゼロのときのリストボックスの幅
- 29. tableView.headerView(forSection:0)の高さはゼロです
- 30. cssで同じ幅と高さの列