본문 바로가기

iOS 앱 개발자 프로젝트/iOS 심화

[iOS] SnapKit (feat. SPM)

2024년 어린이 날은 하루종일 봄비가 내렸습니다.

내리는 빗소리를 들으며 그동안 미루어둔 SnapKit을 설치합니다.

해보니 금방이네요~ ᵔࡇᵔ

 

+ 라이브러리와 프레임워크의 차이점도 복습합니다.

 

[iOS] Framework와 Library 차이점 (Framework Vs. Library)

라이브러리와 프레임워크의 차이는 제어 흐름에 대한 주도성이 누구에게 / 어디에게 있는가에 있습니다. 즉, 애플리케이션의 Flow(흐름)을 누가 쥐고 있느냐에 달려있다고 생각하면 됩니다. 프

maggie-chae.tistory.com

 

 

봄비란 어쩌면 귀신의 눈물 ?


SPM이란?

Swift Package Manager의 줄임말로 Xcode에서 라이브러리를 쉽게 import 하기 위해 apple에서 자체적으로 개발했다. 기존에 코코아팟, 카르타고 등을 활용했으나 이제 대부분의 라이브러리가 SPM을 지원하기 때문에 이를 활용한다.

 

 

CocoaPods VS SPM

CocoaPods와 Swift Package Manager(SPM)는 두 가지 다른 라이브러리 관리 툴로, 각각 장단점이 있습니다.

medium.com

 

 

| 라이브러리 Import 하기

 

https://github.com/SnapKit/SnapKit.git  ← 경로 복사

 

 

프로젝트의 Package Dependencies에 진입해 + 버튼 누르기

 

우상단에 복사한 url을 붙여넣고 Add Package 누르기

 

SnapKit-Dynamic의 타겟은 None으로 바꾸기.

안그러면 오류 발생❗️

 

SnapKit import 완료!

 

 

 

 

 

SnapKit 공식문서 살펴보기

 

Requirements

Requirements iOS 8.0+ / Mac OS X 10.11+ / tvOS 9.0+ Xcode 9.0+ Swift 4.0+ Communication If you need help, use Stack Overflow. (Tag ‘snapkit’) If you’d like to ask a general question, use Stack Overflow. If you found a bug, open an issue. If you have

snapkit.github.io

 


 

SnapKit  기존 방식과 비교하기

코코종 튜터님의 자료 퍼옴

 

equalToSuperview

SnapKit에서 자주 사용되는 방법

해당 뷰의 ‘부모 뷰’을 통해 제약조건을 설정한다.

부모 뷰의 이름을 직접 적지 않아도 파악이 가능하기 때문에 더 깔끔하고 직관적인 코드를 작성할 수 있다.

 

 

SnapKit은 다양한 축약 문법을 제공. 몇가지 예시를 아래에 첨부합니다.

        nameLabel.snp.makeConstraints { // 여러 앵커를 한번에 연결
            $0.top.leading.equalToSuperview().offset(30)
            $0.trailing.bottom.equalToSuperview().offset(-30)
        }
        
        
        
        nameLabel.snp.makeConstraints { // (위, 아래) (리딩, 트레일링)을 한번에 표현하는 이름도 존재
            $0.verticalEdges.equalToSuperview().offset(30)
            $0.horizontalEdges.equalToSuperview().offset(30)
        }

 

 

Inset, Offset 이해하기

이전에 배웠던 뷰의 방향을 그대로 활용하는 것이 Offset

bottom, trailing등 -처리를 포함해서 안쪽을 향하도록 하는것이 Inset

코코종 튜터님의 자료 퍼옴

 

'iOS 앱 개발자 프로젝트 > iOS 심화' 카테고리의 다른 글

[iOS] bookStore app project (3)  (4) 2024.05.08
[iOS] bookStore app project (2)  (2) 2024.05.07
[iOS] bookStore app project (1)  (2) 2024.05.04
[iOS] video playback app  (0) 2024.05.01
[iOS] codebase UI  (0) 2024.04.30