---
# System prepended metadata

title: Untitled

---

## 🧐 문제와 해결

### M1 CocoaPod 설치 문제

-> iTerm 정보 가져오기 > `Rosetta를 사용하여 열기` 체크
-> `brew install cocoapods` or `sudo gem install cocoapods`
-> `sudo arch -x86_64 gem install ffi`
-> Podfile이 있는 프로젝트 directory에서 터미널 연 후, `arch -x86_64 pod install`

---

### CollectionView 오토레이아웃 에러

**문제**
```swift=
let itemSize = NSCollectionLayoutSize(
    widthDimension: NSCollectionLayoutDimension.fractionalWidth(1),
    heightDimension: .estimated(40) // 문제의 원인
)
```
- `NSCollectionLayoutDimension.estimated(40)` 코드가 기본 높이 값을 의미한다고 생각했고 실제 View 의 크기에 따라 가변적으로 변화할 것으로 기대함
- Cell 의 높이를 130dp 로 설정하기 위해 Cell 의 하위 View 의 `HeightAnchor` 를 130 으로 고정

**해결**
- `NSCollectionLayoutDimension.estimated(40)` 보다 실제 사이즈가 더 크면 AutoLayout 에러를 발생하는 것을 발견함
- 실제 사이즈가 estimated 사이즈 범위 이내이면 실제 View 의 크기로 화면에 표시되는 것을 알게 됨

**시도**
1. `NSCollectionLayoutDimension.estimated(40)` 으로 설정하고 Cell 의 Image View 의 `HeightAnchor` 를 `greaterThanEqualTo` 로 설정하니 AutuLayout 에러가 사라지고 원하는 결과를 얻음. 그러나 ImageView 의 image 의 실제 크기에 영향을 받아 실제 Cell 의 크기는 130 보다 커짐
    - `EqualTo` 옵션 사용 시 estimated 값 이하여야 에러가 발생되지 않는다.
    - `greaterThanEqualTo` 사용 시 estimated 값을 초과할 수 있다.
3. 1. 의 문제를 해결하기 위해 estimated 값을 130으로 변경하고 Image View 의 `HeightAnchor` 를 `greaterThanEqualTo` 에서 `EqualTo` 로 변경


---

### CollectionViewCell Register 안해서 화면이 안넘어감

**문제**
- 스토리보드에서 cell을 만들고 identifier를 지정해줘서 따로 register를 해주지 않음
- cell을 클릭 했을 때, `didSelectItemAt:` 함수가 불리지 않음

**해결** 
```swift=
collectionView.register(ProductDetailCell.self, forCellWithReuseIdentifier: ProductDetailCell.identifier)
```
- view controller에서 cell을 같은 이름으로 register 해주는 것으로 해결

---

### Badge 개수에 따른 크기 조절

```swift
self.adjustsFontSizeToFitWidth = true
self.minimumScaleFactor = 0.5
```
- 공간이 부족하면 폰트의 사이즈를 0.5배까지 줄일 수 있도록 수정하여 해결
-> 여전히 badge가 너무 많아지거나 화면이 작아지면 폰트가 잘리는 문제가 남아있음