iOS(30)
-
Tuist에서 Asset, CustomFont 적용하기
tuist 적용을 깔짝하다 소홀해졌습니다..ㅎㅎ.. 이전에는 Source쪽을 마이그레이션?했는데요오늘은 간단하게 Custom Font와 Asset을 적용하는 방법을 알아보겠습니다. Source 적용편 보러가기 > 기존 프로젝트에 tuist 적용하기 1편개인 앱의 모듈화를 진행하기 전 tuist를 적용해두면 추후 프로젝트 관리가 수월하지 않을까란 생각이 들어 급 적용.. 이 글은 Tuist 4.5.1 버전 기준입니다.글을 쓰는 지금도 다듬는 중이니 개선min-i0212.tistory.com 이 글은 Tuist 4.5.1 버전 기준입니다. 들어가기 전에현재 프로젝트의 Resource 폴더에는 Font, GoogleServie, Lottie, Assets, Color가 있음tuist generate를 실..
2024.11.08 -
기존 프로젝트에 tuist 적용하기 1편
개인 앱의 모듈화를 진행하기 전 tuist를 적용해두면 추후 프로젝트 관리가 수월하지 않을까란 생각이 들어 급 적용.. 이 글은 Tuist 4.5.1 버전 기준입니다.글을 쓰는 지금도 다듬는 중이니 개선할 점이 있다면 댓글로 알려주시면 감사하겠습니다. 이번 글에 포함되는 내용- Tuist 설치- Project.swift 생성- Dependency 추가- Script 추가(GoogleService) Tuist 설치https://docs.tuist.io/guides/quick-start/install-tuist Install Tuist | Tuist docs.tuist.iotuist 공식 페이지에서 추천하는 mise를 통해 설치함 기존 프로젝트에 적용하기0. 폴더 이동하기적용하는 방법은 다들 다르겠지만 ..
2024.09.10 -
[Swift] 화면 캡쳐 감지 및 방지하기
회사에서 "iOS는 캡쳐 방지 어떻게 해요?" 라는 질문을 들었다. 애플에서 캡쳐 방지는 지원 안할거에여.. 찾아볼게여.. 화면 캡쳐 감지 다른 앱들은 어떻게 하고 있을까? 네이버는 캡쳐 시 저작권에 대한 경고 팝업을 다음카카오는 경고 팝업을 보여주며 내용 또한 보여주지 않는다. 라이브러리가 뭐 있나..? 하면서 오픈소스 저작권을 찾아봤지만 딱히 보이지 않았다. 흠 일단 경고 팝업부터 띄워보자. 일단 감지를 해야하니 NotificationCenter에 뭐가 있지 않을까? UIApplication.userDidTakeScreenshotNotification 애플에서 제공하는 함수이다. This notification posts after the screenshot is taken. 스크린샷이 찍히고 난 후..
2023.05.07 -
[Swift] Strideable Protocol
Strideable Protocol은 offset 및 측정 가능한 연속적 1차원 값을 나타내는 유형이다. Strideable 프로토콜을 준수한다면 stride(from:to:by:), stride(from:through:by:) 메서드를 사용할 수 있다. stride(from:to:by:) → from ~ to 미만의 범위를 by 간격으로 반복 수행한다 stride(from:through:by:) → from ~ through 이하의 범위를 by 간격으로 반복 수행한다 custom type에 Strideable을 채택하면 advanced(by:), distance(to:) 메서드를 추가해야한다. enum Week: Int { case monday = 0 case tuesday, wednesday, thu..
2022.10.17 -
[Swift] 뷰의 특정 모서리에 round 처리하기 + border
보통 뷰의 모서리를 다 둥글게 한다. 가끔 특정 모서리만 둥글게 하고 싶을 때도 있다. 근데 테두리도 넣어야한다? 구글링구글링.. 모서리를 그리는 방법에는 두가지가 있다. UIBezierPath와 CACornerMask 후자는 iOS 11이상부터 사용가능하다고 한다. BezierPath로 둥근 모서리 만들기 let path = UIBezierPath(roundedRect: rectCornerView.bounds, byRoundingCorners: [.topLeft, .topRight], cornerRadii: CGSize(width: 12, height: 12)) let mask = CAShapeLayer() mask.path = path.cgPath rectCornerView.layer.mask = m..
2022.03.10 -
[graphQL] custom scalar를 사용하기 위해 먼저 해야 할 것
gQL을 조금은 써봤다는 전제하에 쓰는 글이다. graphQL의 스키마 정의에서는 기본 유형의 타입만 지원한다. 여기서 기본 유형의 타입은 String, Int, Float, Boolean이다. 하지만 우리는 개발하면서 기본적인 타입만 사용하지 않는다. 이럴 때 사용 하는게 custom scalar이다. 만약 설정을 해주지않고 사용한다면 .graphql파일은 런타임에서 여러 유형을 반환하도록 설정된다. 나같은 경우는 String으로 나옴. Project - Target - Build Phases의 Apollo GraqhQL의 스크립트에서 passthroughCustomScalars 를 추가해주면 된다. "${SCRIPT_PATH}"/run-bundled-codegen.sh codegen:generate ..
2022.02.18