📝 라이브러리를 수정한 이유
프로젝트를 하면서 외부 라이브러리를 수정해서
내 프로젝트에서 사용하는 경우가 있습니다.
iOS UIKit 프로젝트로 예시를 들며 설명하겠습니다.
저는 SPM 이 아닌 CocoaPods를 사용하였습니다.
보통 iOS에서는 부가 기능을 만들고 싶을 때 extension 을 사용하는 게 적절한 방법인데요
하지만 저장 속성을 추가하는 경우가 있습니다! extension에서는 저장 속성이 포함되면 안됩니다. ⭐️
따라서 완전히 가져온 라이브러리를 Custom 하는 것인데요.
제가 최근에 사용한 라이브러리는 DropDown 라이브러리를 사용했습니다.
( 자세하게 구현한 내용은 따로 업로드 하겠습니다 ! )
최근에 저의 앱 Alert을 actionSheet를 사용하다가, 커스텀으로 저희 앱만의 드롭 다운 팝업을 만들어보자 해서 만들게 되었습니다.
(하지만 변경을 꼭 안해도 됩니다!!!! 다른 방법은 정말 많아요)
✂️ --- 수정한 부분 ---
더보기 클릭
원래는 label만 있었던 라이브러리에 들어있던 DropDownCell.xib 파일을 constraints를 적용해서 저희 만에 Cell로 만들었습니다.
이게 DropDown 의 원래 있던 Cell을 추가 했는데요, 저 왼쪽에 작은 직사각형이 UIImageView 부분 입니다.
따라서 dropDownImage 저장 속성을 추가를 해주었어요! (속성 추가)
open class DropDownCell: UITableViewCell {
//UI
@IBOutlet open weak var optionLabel: UILabel!
@IBOutlet open weak var dropDownImage: UIImageView! // 저장 속성 추가한 부분 🔥
var selectedBackgroundColor: UIColor?
var highlightTextColor: UIColor?
var normalTextColor: UIColor?
}
🧑🏻💻 외부 라이브러리 수정 후 프로젝트에 적용하는 방법
자 이제 본론으로 돌아와 바뀐 라이브러리를 프로젝트에 적용하는 방법을 알아보겠습니다.
1. 사용할 라이브러리의 Git을 Fork를 해줍니다.
저는 DropDown 라이브러리를 예시로 들겠습니다.
2. Fork 된 레포지토리로 와서 이제 브랜치를 파고 코드를 추가 해서 commit, push를 해줍니다.
🔥 코드 추가하는 건 당연히 따로 로컬에서 진행하셔야 돼요!!
3. push까지 진행했으면 Fork 된 라이브러리의 Github를 보시면 올라온 걸 확인할 수 있을 거예요.
저는 어제 수정을 해서 yesterday로 나와있지만, 방금 변경했으면 now 또는 n 분전이라고 나와있을 겁니다.
4. 이제 커밋 내역을 봅시다
커밋 내역에서 브랜치와 커밋 내역을 확인해 주시고요
여기서 SHA를 확인할 수 있습니다! ( Copy the full SHA로 복사해 주세요! )
5. ⭐️ Podfile 에 수정한 레포 등록하기 ⭐️
원래 수정된 라이브러리를 사용하지 않았으면 Podfile에 pod '라이브러리 이름' 만 하면 됐었죠?
여기서 변경점이 생깁니다.
이제 저희가 브랜치에서 수정한 내용을 프로젝트에 가져올 겁니다.
🔥 저희 프로젝트의 Podfile에 아래 코드를 넣어 주시면 됩니다. 🔥
pod '라이브러리', :git => '포크한 라이브러리 repo 주소', :commit => '수정한 커밋 로그 SHA'
아래는 실제로 저희 Podfile 에 제가 추가했던 코드입니다.
pod 'DropDown', :git => 'https://github.com/thingineeer/DropDown.git', :commit => '95ee36f7bd925d466033c2c169979f1c574bf3b9'
6. 마지막으로 pod install 해주기
성공적으로 저희 프로젝트에 새로 만든 저장 속성이 추가되어 커스텀을 할 수 있게 되었습니다.
'iOS' 카테고리의 다른 글
[iOS] TestFlight 사용법 2편 (0) | 2023.12.31 |
---|---|
[iOS] TestFlight 사용법 1편 (1) | 2023.12.30 |
[iOS] SDK does not contain 'libarclite' at the path (0) | 2023.10.06 |
[iOS] 데이터 페이징 (Pagination) in UIKit ColletionView (0) | 2023.09.24 |
[iOS] Xcode 15 Kingfisher 에서의 ImageResource 이슈 해결 (0) | 2023.09.19 |