iOS

[iOS] 외부 라이브러리 수정 후 프로젝트에 적용하는 방법

띵지니어 2023. 10. 12. 19:13

📝 라이브러리를 수정한 이유

프로젝트를 하면서 외부 라이브러리를 수정해서
내 프로젝트에서 사용하는 경우가 있습니다.
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 해주기

이 부분은 코드를 더 추가하여 구현해야합니다.

 

성공적으로 저희 프로젝트에 새로 만든 저장 속성이 추가되어 커스텀을 할 수 있게 되었습니다.