Project56 [SwiftUI Project] 앱에서 Email 보내기 OpenURL 이번에는 앱에서 Email을 보낼 수 있는 기능을 구현해보았습니다. iOS 14+부터 지원하는 openURL을 사용합니다 . Apple Developer Documentation developer.apple.com 1. Model을 생성해줍니다. import Foundation import SwiftUI struct SupportEmailModel { let toAddress: String // 개발자 이메일 let subject: String // 제목 var body: String {""" 의견을 보내주시면 더 나은 서비스 개발에 활용됩니다. """ } // openURL func send(openURL: OpenURLAction) { let urlString = "mailto:\(toAddress).. 2022. 10. 27. [SwiftUI Project] 다크모드/라이트모드 전환 버튼 만들기 이번에는 다크모드/라이트모드를 전환할 수 있는 버튼을 작업하였습니다. UserDefault의 값을 @State처럼 반영하고 변경할 수 있게 해주는 @AppStorage 라는 것을 사용합니다. @State는 앱이 종료되면 메모리에서 해제되는 반면, @AppStorage는 값이 저장된다는 차이가 있습니다. @AppStorage는 iOS14+부터 지원합니다! 1. Assets에서 다크모드에서 사용될 컬러셋을 지정해줍니다. (ex: 배경색, 폰트색, 버튼색 등등) 2. 부모뷰에서 isDarkMode 변수를 만들어주고, Bool 값에 따라서 ColorScheme이 변경될 수 있는 코드를 작성합니다. import SwiftUI @main struct SwiftUICoinApp: App { 생략 @AppStorage.. 2022. 10. 27. [SwiftUI Project] 텍스트필드 글자 수 제한하기 (문제 해결 과정) 이번에는 텍스트 필드의 글자수를 제한하여 UI가 변경되는 것을 방지하였습니다. 간단한 기능이라고 생각하고 미루다가 작업을 해보았는데.. 생각보다 쉽지만은 않았습니다. 1. View 혹은 SearchBar의 Frame(height:)에 값을 주는 방법으로는 해결되지 않았습니다. 2. 구글링하여 didSet, onChange, onReceive 등의 자료들을 찾아보았지만 작동하지 않았습니다. didSet은 xCode13+에서 해당 문제를 해결할 수 없다는 의견이었고, onChange와 onReceive는 작동하지 않았습니다. ViewModel에 있는 @Published var searchText: String = "" 변수의 글자 수를 제어하려는 시도였습니다. 관련 문서: SwiftUI TextField m.. 2022. 10. 19. [SwiftUI Project] 뉴스기사 URL 공유 버튼 만들기 이번에 구현해볼 것은 URL 공유 기능입니다. 좋은 뉴스를 뉴스를 공유하고 싶을 때 사용할 수 있습니다. 인터넷 세상에 꼭 필요한 기능이죠! 재사용 가능한 ShareButtonView import SwiftUI struct ShareButtonView: View { @State private var isShareSheetShowing: Bool = false let url: String var body: some View { Button(action: shareButton) { Image(systemName: "square.and.arrow.up") .foregroundColor(Color.theme.textColor) .font(.headline) .padding(.horizontal) .frame(w.. 2022. 10. 19. [SwiftUI Project] 네트워크 모니터 추가하기 (유튜브 스타일) 카카오톡 먹통 이후 드디어 작업물을 새롭게 기록할 수 있게 되었네요! (짝짝짝) 이번에 구현해본 것은 네트워크 모니터를 활용해 연결 상태를 유저에게 피드백해주는 기능입니다. 모든 어플에 구현되어 있는 필수 기능입니다. 메세지를 보여주는 형태는 유튜브 앱에서 사용되는 스타일로 만들어 봤습니다. 1. NWPathMonitor()로 Network Monitor를 작성해줍니다. import Foundation import Network import SwiftUI class NetworkMonitor: ObservableObject { @Published var isConnected: Bool = true @Published var showAlert: Bool = false let monitor = NWPathM.. 2022. 10. 19. [SwiftUI Project] 몇시간 전, 몇일 전 상대적 시간 구하기 RelativeDateTimeFormatter 이번에는 String 타입인 "2022년 10월 14일 오후 3:50" 날짜를 "1시간 전" 등의 상대적 시간으로 변환하는 작업을 합니다. 몇분 전, 몇시간 전 혹은 몇시간 후 같은 상대적인 시간은 RelativeDateTimeFormatter을 사용하면 쉽게 구할 수 있습니다. var cleanDate: String { let dateFormatter = DateFormatter() dateFormatter.timeZone = TimeZone(identifier: "KST") dateFormatter.locale = Locale(identifier: "ko_kr") if date.count == 21 { dateFormatter.dateFormat = "yyyy년 MM월 dd일 a h:mm" } els.. 2022. 10. 14. 이전 1 2 3 4 5 6 7 8 ··· 10 다음