본문 바로가기
반응형

SWIFTUI17

웹킷 소식 외 한 주간의 애플 소식들 소프트웨어 업데이트 iOS 16 developer beta 8 iOS 12.5.6: 구형 디바이스 보안 버그 수정 9월 행사가 코앞이라 베타도 거의 막바지가 아닐까 예상된다. WebKit의 새 집 WebKit이 GitHub으로 이사 감이라는 소식을 받았다. 개인적으론 좋은 소식이라 생각하는데, 아무래도 GitHub이 대중적이고 Git이 현재 VCS 중에선 가장 인기가 좋다고 생각하기 때문이다. 덕분에 사파리도 더 빠른 발전이 될 것 같다는 기대도 든다. AnyLayout으로 부드러운 화면 전환 구현하기 iOS 16의 SwiftUI에 추가된 AnyLayout을 이용해 레이아웃 간 트랜지션을 구현하는 방법을 설명하는 글이다. 이전에는 불가능한 트랜지션이 가능해지기 때문에 미려한 화면 전환 애니메이션을 구현해.. 2022. 9. 4.
베타 업데이트 소식 외 한 주간의 애플 소식들 업데이트 소식 이번에는 공식적인 소프트웨어 업데이트가 하나 있다. Bootcamp 6.1.16 차기 OS에 대한 베타 테스트 버전도 준비되고 있다. macOS Ventura developer beta 6, public beta 4 iOS 16 developer beta 7, public beta 5 iPadOS 16 developer beta 7, public beta 5 tvOS 16 developer beta 7, public beta 5 watchOS 16 developer beta 7, public beta 5 차기 OS의 첫 마이너 업데이트도 일부 준비 중인 모양이다. iOS 16.1 developer beta, public beta iPadOS 16.1 developer beta, public.. 2022. 8. 28.
한 주 간의 약간(?)의 애플 소식들 엔지니어 시점에서 지난 한 주간의 애플 관련 소식을 모으는 글이지만 양이 별로 없는 것 같다. 소프트웨어 업데이트 macOS 12.5.1, iOS 15.6.1, iPadOS 15.6.1 업데이트 Safari 15.6.1 for macOS Big Sur and macOS Catalina: 구형 OS의 위와 동일한 보안 버그 수정 추정 iOS 16 Develpoer Beta 6, Public Beta 4 iPadOS 16 Developer Beta 6, Public Beta 4 watchOS 9 Developer Beta 6, Public Beta 4 tvOS 16 Developer Beta 6, Public Beta 4 Custom Layout in SwiftUI SwiftUI에는 HStack, VStac.. 2022. 8. 21.
카플레이 주목 등 한 주간의 애플 소식 지난 한 주간 개인적으로 신경이 쓰이는 애플 기술 소식을 모아봤다. 카플레이 기대주? 주관적인 판단은 아니지만 WWDC22에서 발표된 카플레이(CarPlay)에 주목하는 블로그다. 물론 판단 근거는 있겠지만, 그전에 한국에서 애플맵을 쓸 모 있게 만드는 일이 우선시되지 않으면 한국에서는 일부 기능만 쓸 수 있는 "빛 좋은 개살구" 정도밖에 안 될 것 같다. 그러니 팀쿡 화이팅! 블로그 | '카플레이'가 WWDC 2022의 최고 기대작인 이유 WWDC 2022에서 애플은 아이폰 소프트웨어의 차기 버전인 iOS 16을 공개하고 시연했다. 잠금화면이 파격적으로 개선되고 메시지 편집 및 전송 취소 기능이 오랜 기다림 끝에 도입됐다. 이외에도 여러 www.ciokorea.com M1 vs M2 개인적으로 하드웨어.. 2022. 6. 19.
WWDC 버프(?)가 가득한 애플 소식 WWDC22가 성황리에 진행되면서 이 행사 버프가 잔뜩 묻은 소식이 넘쳐났는데 그중 개인적으로 의미를 두는 소식만 몇 가지 모아봤다. WeatherKit 애플에서 공식적으로 날씨 관련 프레임워크를 추가한 듯 하다. 이제 날씨를 알기 위해 굳이 크롤링을 만들지 않아도 된다는 것일까? WeatherKit - Apple Developer WeatherKit brings valuable weather information to your apps and services through a wide range of data that can help people stay up to date, safe, and prepared. developer.apple.com 패스키 오랜만에 애플이 표준 행보에 가세했다. FIDO .. 2022. 6. 12.
SwiftUI로 액션시트 띄우기 (iOS 15, macOS Monterey) 앞서 작성한 경고창을 띄우는 방법이 최신 SDK에서 변경된 점이 있었던 것과 비슷하게 액션시트(ActionSheet)도 최신 SDK에서 조금 바뀌었다. 그래서 바뀐 내용으로 사용법을 간략히 작성해본다. 당연하게도 Xcode 13 이상의 버전에서 개발해야 하며 iOS 15 혹은 macOS Monterey 등에서만 동작하는 내용이다. 기본 예제 iOS 14까지만 해도 .actionSheet(...) 식의 코드가 있었다. 그런데 이게 최신 SDK에서는 낡음(deprecated) 처리가 되었고 대신 .confirmationDialog(...)를 사용할 수 있게 된다. 아래는 바뀐 코드 예제다. struct ContentView: View { @State private var showingActionSheet =.. 2021. 10. 12.
SwiftUI에서 경고창(Alert Dialog) 띄우기(iOS 15, macOS Monterey) iOS 15와 macOS Monterey에서 구현할 수 있는 SwiftUI용 경고창(Alert Dialog)을 띄우는 방법이 새로 추가되었다. 새 방법이 아무래도 코드가 더 간결한 것 같아서 정리해본다. 가장 기본적인 경고창 예제 가장 기본적으로 제목과 메시지 그리고 확인 버튼 하나가 있는 경고창을 띄우는 예제 코드는 아래와 같은 식이다. struct ContentView: View { @State private var showingAlert = false var body: some View { Button("Show Alert") { showingAlert = true } .alert("Alert Title", isPresented: $showingAlert) { Button("Ok") {} } mes.. 2021. 10. 8.
SwiftUI에서 각 플랫폼의 배경색 사용하기 SwiftUI에서 색상을 지정하기 위해서는 Color라는 구조체를 사용한다. 여기에는 당연히 RGB 값을 넣어서 마음대로 색상을 만들 수 있지만 특별히 정해진 색상을 별도의 이름으로 정의해 두기도 했다. 예를 들자면 accentColor나 primary 혹은 secondary와 같은 일반적인 용도의 플랫폼 별 색상을 쉽게 사용할 수 있다. 그런데 모든 색상이 제공되는 것은 아니다. 예를 들어 윈도우의 배경색 종류가 몇 가지 있는데 이를 SwiftUI에서는 제공해 주지 않는다. 이를 위해서는 해당 플랫폼용, 즉 iOS의 경우 UIKIT 그리고 macOS의 경우 AppKit을 이용해 해당 색상을 가져오도록 코드를 작성할 수 있다. 아래와 같은 식으로 말이다. public extension Color { #i.. 2021. 10. 5.
SwiftUI - self is immutable??? SwiftUI 프로그래밍 패러다임에 아직 익숙하지 않다 보니 삽질을 하면서 배우는 게 많은 것 같다. 이번 글의 주제는 제목처럼 가변적인 내(?)가 뭐가 문제인가 하는 내용이다. 우선 간단한 예제를 보자. 아래의 예는 특정 SwiftUI 뷰 구조체인데 뷰가 표시될 때 타이머를 돌려서 주기적으로 뭔가를 하기 위한 코드이다. struct SomeView: View { var timer: Timer? = nil var body: some View { VStack { Text("Timer!") } .onAppear { // compile error timer = Timer() } } } 위에서 timer = Timer() 코드 부분에서 아래와 같은 오류가 발생한다. Cannot assign to property.. 2021. 5. 18.
SwiftUI View Custom Initializer SwiftUI View 구조체는 자동으로 @Binding 프로퍼티를 초기화 매개변수로 지정하는 생성자를 만든다. 바인딩은 당연하게도 외부에서 값을 전달받아야 하는 프로퍼티이기 때문이다. 그런데 이렇게 하나라도 바인딩 프로퍼티가 있으면 나만의 생성자를 작성하는 것에서 난관이 있을 수 있다. 예를 보자. 아래는 CustomView 라는 View에 바인딩 프로퍼티가 하나 선언된 예다. struct CustomView: View { @Binding var name: String ... } 앞서 이야기했다시피 바인딩 프로퍼티는 자동으로 생성자에 매개변수로 값을 전달받는 인터페이스를 가진다. 그래서 위의 뷰는 아래와 같은 형태로 인스턴스를 생성해서 사용해야 한다. struct ContentView: View { @.. 2021. 5. 17.
SwiftUI에서 경고 팝업(Alert) 표시하기 SwiftUI에서는 경고 팝업(Alert Dialog)을 띄우는 방법이 좀 생소하다. 솔직히 말해서 좀 귀찮다. 어쨌든 방법을 찾았기에 글로 살짝 풀어서 정리해본다. 참고로 순수 SwiftUI 코드만 쓰기 때문에 모양은 좀 다르지만 macOS와 iOS 모두에서 동작한다. 경고 팝업을 띄우기 위해서는 Alert 구조체를 이용한다. 아래는 Alert 인스턴스를 생성하는 예제다. Alert(title: Text("Alert"), message: Text("Alert Dialog"), dismissButton: .default(Text("Close"))) 상상대로라면 이 코드를 특정 View의 body에 넣으면 될 것 같다. 그런데 그게 잘 안 된다. 아래와 같은 오류가 나면서 말이다. Return type o.. 2021. 1. 7.
SwiftUI의 PreviewProvider와 Binding SwiftUI는 개발 단계에서 라이브 프리뷰를 통해 코드의 모습을 즉석에서 확인할 수 있습니다. 그런데 @Binding 처럼 외부의 값을 대여해 주어야 하는 경우 샘플 프리뷰를 작성할 때 약간의 곤란함이 있습니다. 예를 들어 아래의 예제가 있습니다. import SwiftUI struct SomeView: View { @Binding var name: String var body: some View { Text("Hello \(name)") } } struct SomeView_Previews: PreviewProvider { static var previews: some View { SomeView(name: "John") } } 위에서 SomeView_Previews 구조체에서 SomeView 인스턴스.. 2020. 12. 14.
SwiftUI에서 SF Symbols 사용하기 SF Symbols가 뭔지 어떻게 사용하는지 간단하게 알아봅시다. 워낙 간단하기 때문에 굳이 글로 적는 게 의미가 있나 싶을 정도로 쉬운 내용입니다. 다만 이 글 작성의 기준은 iOS 13 이상, Xcode 12 이상, macOS 앱이나 멀티플랫폼 앱의 경우 Big Sur 이상이 요구될 수도 있습니다. SF Symbols는 애플에서 제공하는 이미지 아이콘 모음입니다. 어려울 것 없이 'SF Symbols.app' 앱을 찾아서 실행시켜 보면 바로 알 수 있지요. SF Symbols 앱의 모습을 보면 이 아이콘들은 폰트 기반 제공되는 것으로 유추됩니다. 만약 시스템에서 SF Symbols.app을 찾을 수 없다면 별도로 다운로드해서 설치할 수 있습니다. SF Symbols - Apple Developer W.. 2020. 11. 18.
SwiftUI macOS 앱에서 타이틀 바와 툴바가 통합된 윈도우 구현하기 이 글의 목표는 SwiftUI를 사용하는 macOS 앱 프로젝트에서 아래와 같은 윈도우를 구현하는 것입니다. 나눠서 설명했더니 글이 좀 길어졌습니다. 결론만 보시려면 글 하단에 정리한 전체 코드를 참고하시면 될 것 같습니다. 기본 프로젝트 사용하는 프로젝트는 macOS App으로 SwiftUI를 사용하도록 설정했습니다. 당연히 이게 조건이니깐요. 기본 프로젝트는 위와 같은 모양으로 실행됩니다. Unified Title and Toolbar 프로젝트 생성 시 보일러플레이트 코드가 생성된 AppDelegate.swift 파일을 열어보면 NSWindow 인스턴스를 생성하는 코드가 있습니다. 여기에서 styleMask를 설정할 수 있습니다. 여기에 아래와 같이 .unifiedTitleAndToolbar 플래그를.. 2020. 11. 12.
Combine과 SwiftUI 컴바인을 활용해서 실무에 좀 더 유용한 내용을 알아봅시다. Combine을 활용하는 가장 직접적인 예는 아마도 이 글에서 살펴볼 Swift 5.1부터 제공되는 Property Wrapper와 이를 이용해 만들어진 SwiftUI의 몇 가지 기능이 이에 해당할지도 모르겠습니다. 이 글에서 살펴볼 것은 네 가지 키워드입니다. 바로 State, Binding, Observed Object, 그리고 Environment Object입니다. 이 키워드들은 Combine을 이용해 구현한 Property Wrapper를 응용해서 만들어진 것들이지요. 이 글은 Swift 5.1, Xcode 11.3을 기준으로 작성하였습니다. State State는 이름처럼 상태 그 자체를 나타냅니다. 영어로는 Source of Trut.. 2020. 1. 28.
Combine Framework는 어떤 녀석일까요? Combine Framework는 SwiftUI가 소개되면서 함께 소개된 정체 불며의 이벤트 기반 데이터 흐름 처리 프레임워크입니다. 근데 이 설명은 사실 멋대로 붙인 거고, 실제론 Rx의 애플판이라는 말이 더 맞다고는 하는데 저는 Rx도 몰라요. 그렇다면 바닥부터 공부해야겠네요... 아아... Combine Framework Combine 은 이벤트 처리 오퍼레이터를 조합하여 만든 비동기 이벤트 처리 프레임워크입니다. 네 뭔 소리인지 모르겠습니다. 어쨌든 앞서 이야기 했다시피 보통은 Rx라는 것이 사용하던 반응형(Reactive) 프로그래밍 라이브러리라고 설명합니다. 뭐 이렇게 이야기 해 봤자 의미 없으니 막무가내로 예제 코드부터 시작합시다. import Combine 네. Combine 은 프레임워크.. 2020. 1. 15.
728x90
반응형