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 - 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] 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: ..
-
[ios - Swift] MapView 사용하기 (MKMapView 2 / 2)ios 2020. 12. 23. 11:01
이번 글에서는 지난 글에서 얘기한 것과 같이 지역 내 검색 및 좌표에 대한 정보를 추출하는 방법을 알아보도록 하겠습니다. 위 gif를 살펴보면 맵 뷰의 현재 위치, 중앙 위치의 주소, 주변 가게들이 나오는 것을 확인할 수 있습니다. 해당 기능을 사용할 수 있도록 하나씩 작성해 보도록 하겠습니다. 1. 내 위치 찾기 @IBAction func changeValue(_ sender: UISegmentedControl) { // "현재 위치" 선택 - 현재 위치 표시 if sender.selectedSegmentIndex == 0 { self.mainTitle.text = "" self.subTitle.text = "" // 사용자의 현재 위치 locationManager.startUpdatingLocatio..
-
[ios - Swift] MapView 사용하기 (MKMapView 1 / 2)ios 2020. 12. 22. 17:21
이번 글에서는 MapView 이용한 간단한 위치 앱을 만들어 보도록 하겠습니다. init.plist 에서 지도 권한을 요청할 수 있도록 추가합니다. 화면 구성은 다음과 같은 뷰로 구성되어있고 사용하려는 목적은 아래와 같습니다. Segmented Control : 현 위치와 특정 위치로 이동합니다. CollectionView : 맵 뷰에 나타나는 지역에서 해당하는 특정 건물을 찾습니다. Label : 현 위치와 주소를 보여줍니다. 이제 viewDidLoad에서 델리게이트 및 권한 요구 코드를 작성해 주도록 합니다. let locationManager = CLLocationManager() override func viewDidLoad() { super.viewDidLoad() mapkit.delegate ..