@inlinable
·
Programing Langauge/swift
👋 들어가기 전이번시간은 @inlinable이다. 생각보다 조금 어려운 개념이 있으니 차근차근 살펴보자.✊없다면 ?우리는 보통 메서드를 호출할 때 스택에 현재 상태를 보내고 상태를 저장하고다시 돌아오는 등 다양한 오버헤드가 존재한다.☝️@inlinable역할말 그대로 위에서 설명한 오버헤드를 줄이기위해 호출하는 쪽에메서드 내용 전체를 삽입한다.사용 영역함수메서드계산 프로퍼티subscript생성자장점오버헤드를 낮춰 컴파일러 최적화 가능모듈 경계를 넘어 사용 가능단점구현 내용이 공개됨코드 크기가 증가재귀 함수에서는 오히려 비효율적internal, public만 사용 가능✌️@usableFromInline전체적인 느낌은 위에 @inlineable과 동일하다 차이점만 간단하게 명시한다.동일한 모듈 내에 있는 ..
@frozen
·
Programing Langauge/swift
👋 들어가기 전이제는 더 이상 미룰  없다...swift에 사용되는 attribute를 슬슬 공부할 때가 온 것 같다. 여러가지 옵션과 최적화를 위해 사용하는 attribute를 frozen을 시작으로 차근 차근 알아보자.✊@frozen이 없을 때frozen을 설명하는 가장 대표적인 키워드는 enum이다. 왜냐하면 변화에 굉장히 민감히 반응한다. 다음과 같이 enum이 있을 때enum FontSize { case light, regular, medium} switch를 열어 모두 구현해도 다음과 같은 에러가 발생할 때가 있다.⚠️ Switch must be exhaustive .... 발생하는 원인은 추후 추가되거나 수정될 경우를 대비하라는 경고이다. 이 때 기본적으로 우리가 알고 있는 선택지는 `d..
Custom Carousel 만들기
·
iOS/SwiftUI
👋 들어가기 전기본으로 제공해주는 Tabview를 이용한 Carosel은 내가 원하는 애니메이션과 화면에 보여질 상황을 연출하기 쉽지 않아 커스텀으로 많이 만들었다. 이번 시간은 Kavsoft님의 Snap Carousel을 참고하여 어떤 식으로 만들었는 지 살펴보자.✊Snap Carousel이란먼저 Snap Carousel이 무엇인지 살펴보자. Snap Carousel은 사용자가 스크롤하거나 드래그할 때 특정 아이템(뷰)이 정렬되도록 고정(Snap)되는 캐러셀(Carousel) UI이다. 보통 일반적인 캐러셀(Carousel)은 부드럽게 스크롤이 되지만, Snap Carousel은 사용자가 손을 떼면 가장 가까운 아이템을 기준으로 자동 정렬되며, 페이지 형식으로 이동된다.☝️필요한 변수먼저 외부로부터 ..
.scrollTargetLayout
·
iOS/SwiftUI
👋 들어가기 전SwiftUI에서 스크롤 뷰를 이용할 때 자주 등장하는 함수인 scrollTargetLayout을 살펴보자. 이번 포스틍일 기점으로 사이드 프로젝트 또는 KavSoft님의 강의를 클론코딩하면서배우게되는 것들을 간략하게 포스팅으로 만들어서 정리해볼까한다. ✊역할스크롤 타겟으로 사용할 레이아웃을 지정 조금 더 정확하게 말하면  ViewAlignedScrollTargetBehavior 과 같이 사용되며 정확하게 정렬될 수 있도록 한다.스크롤 뷰 안에서 메인 반복 컨텐츠를 포함하는 LazyStack, Vstack, Hstack 과 같은 곳에사용된다.☝️왜  ViewAlignedScrollTargetBehavior 와 함께??scrollTargetBehavior는 스크롤 될 뷰들이 어떤 느낌으로 ..
textFiledStyle
·
iOS/SwiftUI
👋 들어가기 전이번 포스팅은 다소 낯선 개념이다.바로 textfielStyle이다.  Style Suffix가 붙은 애들은 앞에 View들의 스타일을 쉽게 변경할 수 있도록 도와주는 프로토콜이다. 즉, 우리의 첫번째 Style은 TextField다.✊기본 TextFieldStyle먼저 기본적으로 제공해주는 요소를 보자. static varsupporting types설명.automaticDefaultTextFieldStyle플랫폼에 따른 기본 스타일 .planePlanTextFiledStyle스타일이 없는 형태.roundBorderRoundedBorderTextFieldStyle둥근 테두리.squareBorderSquareBorderTextFieldStyle사각형 테두리 (iOS 16+) VSta..
.plist 등록 없이 Custom Font 추가
·
iOS/Setting
👋 들어가기 전현재 디자인 시스템을 구축하고 있는데 폰트 시스템이 과정이 복잡해서한번 정리해보려고 한다.  이번 폰트 디자인 시스템은 Tuist의 디자인시스템을 많이 차용했다.✊ 리소스 및 Bundle Finder 정의먼저 Framework에 정의하기 위해 module이라는 Bundle을 만들고폰트 .ttf, otf 파일을 등록해주자.BundleFinder.swiftimport Foundationclass BundleFinder {}extension Foundation.Bundle { static let module = Bundle(for: BundleFinder.self)}Resources 등록☝️DesignSystemFontConvertible먼저 폰트를 관리하기 쉽게 만드는 구조체를 만든다.na..