moeum)iOS開発ログ#3


日記。


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のすべてのセルにアクセスし、アニメーションエフェクト関数を呼び出す方法を使用します.

次はね。

  • ユニットの注釈行を再使用するためにコードを記述する:
  • 複数のmemo Lineを有するmemo LineList
  • 182を作成する
    修正
  • MemoView
  • リファレンス


    https://stackoverflow.com/questions/48131016/how-to-animate-uiview-inside-uicollectionviewcell