SwiftLayout을 소개합니다

Dophi·2023년 1월 13일
0

컨퍼런스

목록 보기
4/14

소개글

각종 컨퍼런스에 나온 강연들을 정리해보면서 공부해보고 있습니다.
이번 포스팅은 if(kakao) 2022에서 이희종님과 최광훈님께서 강연해주신 내용을 정리했습니다.
제목은 "SwiftLayout을 소개합니다"이며 UIKit을 SwiftUI 처럼 쓸 수 있도록 개발한 라이브러리에 대한 내용입니다.
말투는 편한 말투로 작성하니 양해 부탁드립니다.

영상 다시보기
문서 자료

발표내용

UIKit? SwiftUI?

OS 최소 버전 등의 문제로 아직까지는 UIKit을 사용해야하는 경우가 많음

UIKit의 한계점

Interface Builder (스토리보드 등)

  • 유지 보수가 어렵다
  • Conflict 발생시 해결이 쉽지 않다

Code

  • 명령형 코드로 화면의 형태를 파악하기 어렵다
  • 분기처리로 코드의 파편화가 심해질 수 있다

SwiftLayout

UIKit을 SwiftUI와 같이 쓰기 쉽고 가독성이 높은 선언적인 구문으로 사용할 수 있게 해주는 라이브러리

계층 구조 정의하기

  • Sublayout을 통해 정의 가능

Constraint 정의하기

  • anchors를 통해 정의 가능
  • cap은 leading, top, trailing을, shoe는 leading, bottom, trailing을 한꺼번에 조작 가능

레이아웃 활성화시키기

  • finalActive를 통해 변화가 없는 정적인 레이아웃 활성화시키기
  • activation 객체를 활용하여 레이아웃을 변화시키기

조건에 따라 레이아웃을 변화시키기

  • 단순하게 if문을 사용해서 조건문 작성 가능

프로토콜로 코드 간단하게 만들기

  • Layoutable을 채택하여, 간단하게 updateLayout을 통해 레이아웃을 변화시키고, LayoutProperty 라는 프로퍼티 래퍼를 쓸 수 있음
  • LayoutProperty 변수가 변할때마다 자동으로 레이아웃이 업데이트됨
  • AnimateableLayoutProperty를 통해 애니메이션도 적용 가능

코드 스크린샷만 첨부하긴 했지만, 실제 발표에서는 이 코드가 어떤 화면을 의미하는지 예시도 보여주고 친절하게 설명해주십니다!

라이브러리의 방향성

  • 간결한 문법:
    • 개발자에게 간결한 API 제공
    • 라이브러리를 구성하는 코드의 간결함을 추구
  • 낮은 진입장벽
    • 기존 native API를 래핑하는 방법을 택해, 기존 사용성을 최대한 제공
    • autolayout을 작성하는 과정도 기존과 비슷하도록 개발
  • 냄새 없는 코드
    • 안정성을 추구하고 사용자의 의도를 침해할 수 있는 부분은 제외

효과적이었던 개발 방법

  • Testing and Refactoring
    • 수많은 테스트케이스들을 작성함으로써 리팩터링을 최소화
    • 필요하다면 과감하게 리팩터링 진행
  • Pull Request
    • 테스트가 통과해야 merge가 가능하도록 함으로써 검증된 코드를 유지
    • 영어로 작성하면서 리뷰는 코드에 집중

예제 코드

github
https://github.com/ioskrew/SwiftLayout

sample-source
https://github.com/ioskrew/SwiftLayout-Sample

profile
개발을 하며 경험한 것들을 이것저것 작성해보고 있습니다!

0개의 댓글