moeum)iOS開発ログ#3
6196 ワード
日記。
AutoLayoutで長い間かき回していましたが、
https://www.wtfautolayout.com/のWebサイトが役立ちます.
UIスクリーンショット
UICollectionViewCell - AutoLayout
問題は、UIcollectionViewCellをAutoLayoutとして生成することです.initがAutoLayoutをキャプチャすると、フレームがキャプチャされずにアンカーポイントが接続され、エラーメッセージが表示されます.
CalendarCollectionViewCellのwidthは0で、edgeが与えられたことによるエラーです.
override func layoutSubviews() {
if frame.width != 0.0 && self.isLoaded == false {
self.configure()
self.isLoaded = true
}
}
layoutSubviewを過剰にレンダリングすることにより、フレームサイズが0でない場合にisLoadedのフラグを付け、1回のみviewをキャプチャし、コードを記述してautolayoutをキャプチャする.Initは初期化できませんが、どこで初期化するか分かりませんのでlayoutSubViewで初期化してみます.まずトリックで解決して、もっと良い方法があると思います.私は探し続けます.UIcollection ViewCell-アニメーションの表示と非表示
よく見ると、テストと書いてあるMemoLineViewが少しぼやけていましたが、この部分を編みました.
// UICollectionViewCell
public func hideMemoList() {
UIView.animate(withDuration: 0.5,
delay: 0,
options: .transitionCrossDissolve,
animations: {
self.memoLineView.alpha = 0
})
}
public func showMemoList() {
UIView.animate(withDuration: 0.5,
delay: 0,
options: .transitionCrossDissolve,
animations: {
self.memoLineView.alpha = 1
})
}
上のコードは、UIcollectionViewCellクラスで作成されたアニメーション関数です.これは、ViewControllerのCollectionViewで呼び出されます.for collectionViewcell in collectionView.visibleCells {
let cell = collectionViewcell as! CalendarCollectionViewCell
cell.hideMemoList()
}
CollectionViewのすべてのセルにアクセスし、アニメーションエフェクト関数を呼び出す方法を使用します.次はね。
修正
リファレンス
https://stackoverflow.com/questions/48131016/how-to-animate-uiview-inside-uicollectionviewcell
Reference
この問題について(moeum)iOS開発ログ#3), 我々は、より多くの情報をここで見つけました https://velog.io/@annapo/moeum-iOS-개발-일지-3テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol