Swift(스위프트): Vapor를 사용하여 iOS에서 웹 서버 실행 (스토리보드)

출처 Running a Web Server on iOS with Vapor 원문에서 SwiftUI 부분을 Storyboard로 변경하였습니다.   Vapor를 사용하여 iOS에서 웹 서버 실행   Vapor를 사용하면 iOS 앱이 클라이언트이자 서버가 되어 데이터를 제어할 수 있습니다. (심지어 다른 장치에서도 가능합니다.) 이 튜토리얼에서는 동일한 프로세스에서 클라이언트-서버 통신을 시작하는 방법을 설명합니다. 이 포스트에서는 다음 방법을 더보기…

SwiftUI: ObservableObject 프로토콜과 @Published, @ObsevedObejct, @StateObject 프로퍼티 래퍼

ObservableObject란? 기본적으로 ObservableObject는 @Published 프로퍼티 래퍼가 붙은 값이 변경되기 전에, 변경된 값을 방출(emit)하는 objectWillChange 퍼블리셔를 사용할 수 있도록 하는 프로토콜입니다. 클래스에서만 사용 가능한 프로토콜입니다. class Contact: ObservableObject { @Published var name: String @Published var age: Int init(name: String, age: Int) { self.name = name self.age = age } func haveBirthday() 더보기…

Swift(스위프트): 버튼에서 메뉴 표시 기초 (UIButton 또는 UIBarButtonItem에서 UIMenu를 표시하는 방법) – 스토리보드

출처 바로가기   iOS 14에서는 UIBarButtons 및 UIButtons에서 메뉴를 표시할 수 있습니다. (14버전 이후부터 가능)   UIMenu의 예제 viewDidLoad(_:)에 다음 코드를 작성합니다. var menuItems: [UIAction] { return [ UIAction(title: “Standard item”, image: UIImage(systemName: “sun.max”), handler: { (_) in }), UIAction(title: “Disabled item”, image: UIImage(systemName: “moon”), attributes: .disabled, handler: { (_) 더보기…

Swift(스위프트): Local Notification (로컬 푸시 메시지, 오프라인 푸시 메시지)

  Swift: Local Notification (로컬 푸시 메시지, 오프라인 푸시 메시지) Local notification(로컬 노티피케이션) 흔히 푸시 알람, 푸시 메시지로 일컫는 기기 메시지의 형태인데 외부 네트워크를 거치는 형태가 아닌 기기 내부에서 발신하는 오프라인 푸시 알람입니다. 위 스크린샷은 로컬 노티피케이션의 예제로 제목과, 메시지 및 사진 섬네일이 첨부되어 있습니다. 이하 편의상 Local Notification을 푸시 더보기…

Swift(스위프트): 인터넷 접속 여부 판별하기 (WiFi & 셀룰러 LTE, 5G 등)

iOS 앱에서 인터넷에 접속되어 있는지 (온라인, 오프라인) 여부를 확인하려면 어떻게 해야할까요? 해당 방법은 아래와 같습니다.   Swift(스위프트): 인터넷 접속 여부 판별하기 (와이파이 WiFi & 셀룰러 LTE, 5G 등) 1. 인터넷 접속 여부만 판별 WiFi, 셀룰러 모두 사용 가능하나 인터넷 연결 여부만 판별하며 어디서 접속했는지(와이파인지 셀룰러인지) 구분하지 않습니다. 출처 // // 더보기…

Xcode: cmd + / 단축키를 눌렀을 때 코멘트(주석) 위치를 현재 들여쓰기에 맞추기 (CommentHere)

Xcode: cmd + / 단축키를 눌렀을 때 코멘트(주석) 위치를 현재 들여쓰기에 맞추기 보통 프로그래밍을 할 떄 쓰는 에디터 등에서 현재 라인의 코드를 주석처리하는 단축키는 command(윈도우의 경우 Ctrl) + / 를 누르면 해당 라인이 주석 처리가 됩니다. Xcode도 마찬가지인데, Xcode에서 해당 기능을 사용하면 아래와 같이 주석처리됩니다.   // 표시가 현재 들여쓰기에 더보기…

Swift: AVAudioSession.interruptionNotification 처리 (사운드 재생 중 전화벨, 알람 등이 울렸을 때 처리)

Swift: AVAudioSession.interruptionNotification 처리 (사운드 재생 중 전화벨, 알람 등이 울렸을 때 처리) 사운드 재생 중 전화벨, 알람 등이 울렸을 때 해야 될 작업은 어떻게 처리할까요? 뷰 컨트롤러에 아래 코드를 추가합니다. import UIKit import AVFAudio class MainTabBarController: UITabBarController { override func viewDidLoad() { super.viewDidLoad() // NotificationCenter 옵저버 등록 NotificationCenter.default.addObserver(self, selector: #selector(didInterrupted), 더보기…

iOS 앱 포트폴리오: 음악 스케일(음계) 학습 도우미 앱 UltimateScale 애플 앱스토어 출시 📱

UltimateScale UtimateScale은 음악 스케일(음계) 학습 도우미입니다. 앱스토어 링크 UltimateScale 한국 앱 스토어 링크 (모든 국가 출시)   깃허브 링크 https://github.com/ayaysir/MusicScale   특징 및 사용 기술 애플 앱스토어의 검수에 통과하였습니다. Core Graphics를 통한 뷰 드로잉 (피아노 건반) WebKitView를 통한 자바스크립트 라이브러리와 양방향 통신 (abcjs 악보 라이브러리) 음악 이론과 관련된 데이터 계산을 즉석에서 더보기…

Swift(스위프트): 앱 내부에서 팝업으로 앱 스토어 앱 정보 띄우기

Swift(스위프트): 앱 내부에서 팝업으로 앱 스토어 앱 띄우기 아래 움짤과 같이 자신이 만든 앱 내부에서(외부 브라우저나 앱스토어로 이동하지 않고) 다른 앱을 표시하고자 할 때 StoreKit을 사용합니다. 다른 앱을 홍보할 때 사용하면 좋습니다.   참고로 이번 예제는 시뮬레이터는 실행이 불가능하므로 실제 기기에서 테스트해야 합니다.   1: 위 작업을 실행하고자 하는 뷰 더보기…

Swift(스위프트): DateFormatter로 시간대 약어(Timezone abbreviation) 표시

Swift(스위프트): DateFormatter로 시간대 약어(Timezone abbreviation) 표시   TimeZone.current.identifier와 TimeZone.abbreviationDictionary를 사용하면 시간대 약어를 표시할 수 있습니다. func dateString(timestamp: Int) -> String { let date = Date(timeIntervalSince1970: TimeInterval(timestamp)) let formatter = DateFormatter() formatter.timeZone = .autoupdatingCurrent formatter.dateFormat = “yyyy-MM-dd HH:mm:ss” let timezoneAbbr = TimeZone.abbreviationDictionary.first { $1 == formatter.timeZone.identifier } // timezoneAbbr?.value는 Asia/Seoul, timezoneAbbr?.key는 더보기…