[TIL] 2021.01.29

승아·2021년 1월 29일
0

👩🏻‍💻 오늘 공부한 내용

  • CollectionView Dynamic Cell Width ( 참고 사이트, Apple Developer )

    - 핵심은 아래 코드이다. UICollectionViewDelegateFlowLayout에서 고정된 사이즈 대신 저 함수를 이용해주면 된다. 셀의 text를 먼저 입력한 후의 width를 구하는것..! 자세한 설명은 참고 사이트에서 확인하길 바란다.
    - systemLayoutSizeFitting() : 특정 뷰를 width, height의 우선순위에 따라 targetSize에 맞는 Size를 계산하여 반환해주는 함수.
  1. contentView의 width는 intrinintrinsicContentSize에 fit한 사이즈여야 하므로
    target size의 width는 layoutFittingCompressedSize(가능한 최소 크기) 로 설정하고, height는 받아온 값으로 설정합니다.
  2. height의 경우, targetSize의 height에 반드시 맞출 필요가 있으므로 가장 우선순위가 높은 required로 설정합니다. width의 경우에는 현재의 target size에 맞추는 것이 아니라 (현재는 layoutFittingCompressedSize.width 이므로 최소 크기)
    content size에 맞게 늘어나야 하므로 다소 우선순위가 낮은 fittingSizeLavel로 설정합니다.
    static func fittingSize(availableHeight: CGFloat, name: String?) -> CGSize {
        let cell = TagCell()
        cell.configure(name: name)
        
        let targetSize = CGSize(width: UIView.layoutFittingCompressedSize.width, height: availableHeight)
        return cell.contentView.systemLayoutSizeFitting(targetSize, withHorizontalFittingPriority: .fittingSizeLevel, verticalFittingPriority: .required)
    }
  • CollectionView Dynamic Cell Height ( 참고 사이트 )

  • SnapKit ( 참고 사이트 )
    - Dynamic Cell을 공부하다 알게되었다. SnapKit은 constraint을 좀 더 간편하게 사용할 수 있는 오픈 라이브러리이다. 확실히 constraint을 직접 써주는것보다 간편하다.

 titleLabel.snp.makeConstraints { (make) in
	make.top.equalToSuperview().inset(10)
        make.bottom.equalToSuperview().inset(10)
        make.left.equalToSuperview().inset(10)
        make.right.equalToSuperview().inset(10)
  }
  • Literal ( 참고 사이트 )
    - 별 거 아닌데 계속 까먹는다. Color Literal, Image Literal 입력 후 클릭하면 커스텀 컬러와 이미지를 선택 할 수 있다.

✍🏻 오늘은..

친구들이 미래의 유저이기 때문에 디자인을 신경쓰고 있다.😭 당근마켓, 번개장터를 찾아보면서 구현하는 중이다. 다이나믹 셀 부분은 번개장터 UI를 참고하였다. 번개장터엔 xmark image로 삭제할 수 있는 기능까지 있던데 xmark image도 조만간 넣어 볼 예정이다. 사실 오늘 좀 시도했지만 xmark가 이상하게 들어가 일단 보류했다. 내가 들은 강의에선 거의 Storyboard만을 사용해서 UI를 코드로 구현해볼 일이 없었는데 오늘 드디어 구현해보았다. Storyboard가 역시 괜히 있는게 아니었다.. 하지만 코드 구현은 다이나믹 셀 같이 동적인 UI를 구현할 때 꼭 필요하기 때문에 확실히 알아 둘 필요가 있는것 같다. UI 구현 공부 좀 해봐야겠다.
요즘 들어 Xcode가 슬슬 짜증난다. 분명! 코드도 똑같고 설정해준것도 다 똑같았는데 어제는 안됐고 오늘은 됐다. 이런적이 한 두 번이 아니라 더 화난다 😈 안드로이드는 동기화가 빠릿빠릿하게 됐는데.. ㅋ 그립다 그 시절.. ^^ 내일은 태그를 입력하면 추가가 되는 기능을 구현해 볼 예정이다 ~

0개의 댓글