ios
-
[ios - Swift] LaunchScreen 설정ios 2021. 3. 2. 14:14
런치 스크린이란 사용자에게 자연스러운 앱 사용경험을 제공하기 위해 앱을 실행 시 데이터를 초기화할 시간을 벌어주는 역할을 합니다. 이번 글에는 런치 스크린 변경 방법과 초기화 데이터를 어디에 작성해야 하는지만 알아보겠습니다. 런치 스크린 설정 방법 런치 스크린을 따로 추가했다면 위 콤보박스에서 런치 스크린을 선택해 주면 간단하게 변경 가능합니다. AppDelegate.swift => application(_didFinishLaunchingWithOptions:) 런치 스크린에 컨트롤러가 연결이 안되서 찾아보니 위 메소드에 작성해야 한다고 합니다. application(_didFinishLaunchingWithOptions:)는 런치 스크린이 화면에 표시 후 실행되며 메소드 안에 작성된 코드가 모두 실행되..
-
[ios - Swift] NSCache Image 사용하기ios 2021. 2. 9. 17:57
안녕하세요. 이번에 소개할 내용은 NSCache입니다. 앱에서 사용할 이미지를 매번 서버에서 불러오게 된다면 된다면 자원 낭비이기 때문에 이번 글에서는 이를 해결하기 위해 캐시에 대해 정리하려고 합니다. 캐시란 데이터나 값을 미리 복사해 놓는 임시 장소라고 정의되어있습니다. 이를 이용해서 동일한 작업을 진행할 때 작업 시간이 오래 걸리는 데이터를 미리 저장해 두었다가 사용하는 것을 의미합니다. 우리는 NSCache를 사용한 메모리 캐시와 FileManager를 사용한 디스크 캐시의 사용 방법 및 성능 차이를 비교해 보도록 하겠습니다. 1. 메인 스토리 보드 작성 메인 스토리 보드의 디자인은 버튼과 이미지 뷰를 이용해 제작하였고 각 버튼의 기능은 다음과 같습니다. FIle Delete : FileManag..
-
[ios - Swift] App 상태 변경에 따른 Widget 초기화ios 2021. 2. 4. 16:01
앱 상태 변경에 따라 위젯의 타임라인을 다시 설정해 줘야할 때가 있다. 이 때 앱에서 WidgetKit에게 아래와 같은 방법으로 타임라인을 다시 요청하도록 할 수 있다. WidgetCenter.shared.getCurrentConfigurations { (result) in switch result { case .success(let widgets): for info in widgets { /// 특정 위젯 타임라인 로드 WidgetCenter.shared.reloadTimelines(ofKind: info.kind) print(info.family, info.kind) // 위젯의 크기, 식별자 } break case .failure(let error): print("Fail") break defaul..
-
[ios - SwiftUI] Widget 사용하기 (2/2)ios 2021. 2. 4. 15:37
위 이미지는 뉴스 API를 이용해 받아온 데이터 리스트를 선택하면 해당 뷰로 이동할 수 있도록 제작한 위젯입니다. 이번 글에서 코드를 살펴보도록 하겠습니다. struct myStaticWidgetEntryView : View { var entry: Provider.Entry var body: some View { VStack { Color(.systemOrange) Text("최신 뉴스 20") } } } struct myStaticWidgetEntryView : View { var entry: Provider.Entry var body: some View { ZStack { Color(.systemOrange) VStack { Text("최신 뉴스 20") } } } } 뷰 백그라운드의 색상을 변경하기..
-
[ios - SwiftUI] Widget 사용하기 (1/2)ios 2021. 2. 4. 10:23
이번 글에서는 위젯 사용 및 뷰 이동을 테스트한 글을 정리해 보았습니다. 먼저 Swift 프로젝트에서 Widget Extension을 추가해 주도록 하겠습니다. Extension이 추가되면 기본적인 코드가 작성된 swift 파일을 확인할 수 있습니다. 이제 작성된 코드의 의미를 먼저 알아보도록 하겠습니다. struct Provider: IntentTimelineProvider { func placeholder(in context: Context) -> SimpleEntry { SimpleEntry(date: Date(), configuration: ConfigurationIntent()) } func getSnapshot(for configuration: ConfigurationIntent, in con..
-
[ios-Swift] Share Extension 사용하기ios 2021. 1. 27. 10:49
이번 글에서는 Share Extension을 커스텀 뷰로 꾸며 사용하는 글입니다. 1. 설정 ShareExtensionExample 프로젝트를 생성한 후 File -> Target -> Share Extension을 추가해 주도록 합니다. Extension -> App 간 데이터 사용은 동일한 그룹을 사용해야 데이터를 공유할 수 있는 것으로 알고 있어 그룹 설정을 먼저 하도록 하겠습니다. 프로젝트의 Capacapabilities -> App Grouops를 선택 후 그룹을 설정해 주도록 합니다. 그룹명은 group.Bundle identifier.Share를 사용했습니다. TARGETS -> 프로젝트에서 추가한 그룹을 셰어 익스텐션에서 체크해주도록 합니다. 이제 그룹 설정이 완료되었습니다. 이제 우리는 ..
-
[ios - Swift] Phi Chart View (CALayer)ios 2021. 1. 12. 10:18
() 이번 글에서는 지난번에 배운 UIBezierPath, CAShapeLayer를 사용해 파이 차트를 만들어 보도록 하겠습니다. import UIKit class UIPieChatView: UIView { override init(frame: CGRect) { super.init(frame: frame) } required init?(coder: NSCoder) { super.init(coder: coder) } override func setNeedsDisplay() { super.setNeedsDisplay() definePieChatLayer() } private func definePieChatLayer() { } } UIView를 상속받은 기본적인 클래스 구성입니다. 앞으로 이 클래스에 사용자..
-
[ios - Swift] Circle Progressbar 만들기 (CALayer)ios 2021. 1. 8. 13:53
이번에는 위 이미지와 같은 CAGradientLayer, CAShapeLayer를 사용한 원형 프로그래스 바를 만들어 보도록 하겠습니다. Layer에 대한 자료는 baked-corn.tistory.com/110 참조해 보는 것도 좋고 간단하게 모든 뷰는 UI를 담당하는 하나의 CALayer를 가지고 있고 CALayer는 여러 subLayer를 가질 수 있다고 보면 될 것 같습니다. 우선 이미지와 같이 프로그래스 바가 진행하면서 보일 부분을 나타내기 위해 CAGradientLayer를 사용해 뷰에 대한 레이어를 설정해 주면 됩니다. import UIKit class UICircleProgressbar: UIView { override init(frame: CGRect) { super.init(frame: ..