[iOS/SwiftUI] LunchScreen 적용하기
·
IOS - Swift/SwiftUI
UIkit 에는 main 스토리보드와 더불어,항상 같이 딸려왓고 기본으로 세팅되는 LaunchScreen 이 SwiftUI에는 없었습니다. 찾아보니 스유에서는 기본적으로 런치스크린을 Info.plist 에서 관리하는것을 알았고 UIkit처럼 런치스크린을 스토리보드에서 관리하는 방법도 만들 수 있었습니다! 1. Info.plist 으로 설정하는 방법 파일의 최상단 부분에 프로젝트를 선택 후 Target > Info 으로 들어가서 Key 부분에 아래 Launch Screen을 추가해준다. 이때 Value에 적혀있는 LaunchScreenBackgroundColor 등의 이름들은 Assets에 저장한 이름대로 작성해주면 됩니다. 2. 스토리 보드 추가하기 Cmd + n 으로 LaunchScreen 추가하기 스..
[iOS/Swift] 앱스토어 배포와 리젝일기
·
IOS - Swift
JMTeng 앱을 드디어 배포를 하게 되었습니다. 배포를 하기 위해서는 앱 아이콘, 아카이브, 앱 바이너리 파일 업로드 등의 절차를 거쳐야 하지만 이전에 Testflight를 통해서 최종 제출을 제외한 나머지를 진행했었기에 생략하겟습니다. 앱스토어에 올라갈 목업 이미지를 뽑아줍니다. ipad를 선택하지 않은 경우에는 굳이 아이패드 사이즈를 지정하지 않아도 문제없지만 정해진 규격만 지켜주시면 문제되지 않습니다. 이따금 사진을 올렷는데 x표시가 뜨면서 사진이 올라가지 않았다고 뜨는 경우가 있는데 사진을 다시 올려주면 해결됩니다 프로모션 텍스트 목업 이미지 아래에 들어갈 처음에 보이는 간단한 설명이고 자세한 설명은 (더보기) 로 작성될 설명 텍스트에 상세한 기능들에 대해서 작성하면 됩니다. 이후 저작권과 사용..
[iOS/Swift] 앱스토어 게임 탭 따라하기 (Composition Layout)
·
IOS - Swift
구현하려는 view Compositional layout 각 필요한 Cell들을 Nib 파일로 묶어서 작성했습니다. import UIKit final class ExtraLargeAppCell: UICollectionViewCell { @IBOutlet private var captionLabel: UILabel! @IBOutlet private var titleLabel: UILabel! @IBOutlet private var subtitleLabel: UILabel! @IBOutlet private var thumbnailView: UIView! override func awakeFromNib() { super.awakeFromNib() thumbnailView.layer.cornerRadius = ..
[iOS/Swift] BottomSheet 구현하기 - 라이브러리 사용
·
IOS - Swift
We Want 네이버 지도의 Bottom Sheet 구현 UIPanGestureRecognizer를 사용하여 사용자의 터치에 따른 화면(View or ViewController)의 이동 구현 1) 사용한 라이브러리 - PanModal 구현 아이디어 - 전체 구조 TableView / View + Lable / Composition Layout 사용 각각 storyBoard로 구현후 bottomsheet로 나타나게 구현 맨 위부터 View + Label 가장 일반적인 vc TableViewController를 사용한 vc Compositional 을 이용한 vc (코드베이스 사용) 각각 해당 Button 분기처리 import UIKit import PanModal class ViewController: U..
[iOS/Swift] Run Loop ( 2 / 2 )
·
IOS - Swift
Run Loop 작동원리 Run Loop는 루프를 수행할 때 2가지 Event Source를 수신합니다. 1. Input Source 다른 thread 나 App으로부터 온 비동기 이벤트를 전달합니다. 2. Timer 예약된 시간이나 간격마다 동기 이벤트를 전달한다. 위 그림에서 Thread에서 노란색 Run loop를 한 바퀴 도는 작업이 한 번의 실행이라고 가정한다면, 루프는 한 바퀴를 돌면서 Event들을 모아놨다가, 한꺼번에 처리하는 방식으로 작동하게 됩니다. 이 Run loop는 한 번 event source를 읽고 전달하는 과정이 끝나면 그대로 대기합니다. 즉, 내부적으로 반복 실행이 되지 않기 때문에 스레드 내에서 프로그래머가 while, for문을 통해 명시적으로 반복 실행시켜줘야 한다. ..
[iOS/Swift] Run Loop - (1 / 2)
·
IOS - Swift
💡레이아웃 이해하기 -1 RunLoop 편 런루프 애플문서 공식문서 런루프란? RunLoop 객체는 소켓, 파일, 키보드 마우스 등의 프로그래밍 입력 소스를 처리하는 이벤트 처리 루프이다. RunLoop 객체는 창 시스템 및 Port 객체와 같은 소스에서 마우스 및 키보드 이벤트를 처리합니다. 또한 RunLoop 객체는 Timer 이벤트도 처리합니다. 애플리케이션은 RunLoop 객체를 생성하거나 명시적으로 관리하지 않습니다. 시스템은 각 Thread 객체에 필요한 경우 RunLoop 객체를 생성하며, 애플리케이션의 메인 스레드도 포함됩니다. 현재 스레드의 run loop에 액세스해야 하는 경우 클래스 메서드 current를 사용하세요. RunLoop의 관점에서 볼 때, Timer 객체는 "입력"이 아닌..
[iOS/Swift] UIkit image Resizing ( 크기 / 품질)
·
IOS - Swift
이미지 리사이징을 해야할 일이 생겨서 리사이징을 하는 방법을 찾던중 다양한 방법이 있는것을 알게 되었습니다. 하나는 공식적으로 메서드인 UIGraphicsImageRenderer 이고 다른 하나는 jpegData(compressionQuality:) 메서드를 사용하여 UIImage의 JPEG 압축하는 방식입니다. UIGraphicsImageRenderer란? Core Graphics 지원 이미지를 만들기 위한 그래픽 렌더러입니다. UIGraphicsImageRenderer는 iOS 10.0 이후에 사용할 수 있는 API로, 그래픽스 및 이미지 렌더링에 최적화된 컨텍스트를 제공합니다. 이를 사용하면 Core Graphics의 복잡한 API를 사용하지 않고도 스위프트 코드로 간단하게 이미지를 그릴 수 있습니..
[iOS/Swift] Dependency Injection, 의존성 주입이란?
·
IOS - Swift
Dependency. 의존성이란? 객체 지향 프로그래밍에서 Dependency, 의존성은 서로 다른 객체 사이에 의존 관계가 있다는 것을 말한다. 즉, 의존하는 객체가 수정되면, 다른 객체도 영향을 받는다는 것이다 예를들어 아래의 코드의 경우에는 class APart { var name: String = "A부품" class BPart { var name: String = "B부품" } class CGoods { // CGoods APart에 의존한다.(= 의존성이 생긴다.) // APart를 할당한다. (실제로는 네트워크 매니저 같은것들에서 사용됨). var a: A부품 = A부품() func printName() { print(a.name) } 이런식으로 CGoods 는 위의 두개의 part에 의존하..
Managing the view hierarchy 에 관하여 - 1
·
IOS - Swift
JMT 프로젝트를 진행하면서 view의 layer에 대해서 문제 해결이 된 김에 해당하는 메서드들에 대해서 기록해보겟습니다. UIView의 공식문서중 Managing the view hierarchy 을 보면 UIView | Apple Developer Documentation An object that manages the content for a rectangular area on the screen. developer.apple.com 그중 제가 사용한 몇가지만 중점적으로 살펴본다면 가장 기초가 되는 SuperView - subView 개념입니다 SuperView는 모두가 아시는것처럼 가장 상위에 있는, 모든 View들을 담고있는 속성입니다(물론 상대적임) SubView는 view계층과 연관된 su..