iOS

    Swift 찍먹하기

    Swift 찍먹하기

    목차 Swift란? 더욱 빠른 성능 Fast 더욱 안전하게 Safe 세련된 표현 Expressive 다중 패러다임 명령형 객체지향 프로그래밍 함수형 프로그래밍 프로토콜 지향 프로그래밍 Swift란? Swift 는 2014년 WWDC를 통해 처음 소개되었습니다. 기존 애플 운영체제용 언어인 Objective-C 와 함께 공존할 목적으로 만들어졌으며, 빠르고 안전하며 세련된 표현을 지원하는 프로그래밍 언어라는 점을 강조하고 있습니다. It’s a safe and fast programming language that combines the best in modern language thinking with wisdom from a diverse open source community. 더욱 빠른 성능 Fas..

    XCode15+ Image Color Assets 관리 방법의 변화

    XCode15+ Image Color Assets 관리 방법의 변화

    목차 Asset Catalogs 의 새로운 기능 원리 사용법 사용 후 느낀 점 Asset Catalogs 의 새로운 기능 XCode15 을 통해 에셋 카탈로그에 새로운 기능이 추가되었습니다. 이제 다음처럼 카탈로그에 리소스를 추가하면 Color, Image를 해당 이름을 통해 상수로 불러올 수 있습니다. 따라서 직접 Enum이나 Struct를 만들어 각 리소스들을 직접 상수화 시키는 번거로움이 줄었습니다. 원리 에셋 카탈로그에 우리가 리소스를 추가하면 XCode에서 GeneratedAssetSymbols.swift 라는 파일을 생성하고 각각 ImageResource, ColorResource라는 Struct 안에 전역 상수로 만들어 줍니다. 아래 이미지를 보면 ImageResource 를 통해 에셋 카탈..

    XCode Archive 시 has no member Error 발생

    XCode Archive 시 has no member Error 발생

    목차 포스팅 동기 Archive 시 Type '' has no member '' 문제 발생 문제될만한 곳 확인하기 문제 해결 포스팅 동기 개인 앱을 만들다가 어느정도 완성되기도 했고, 햅틱 반응 테스트가 필요해 테스트 플라이트에 올려보기로 했다. 그런데 시뮬레이터나 실기기 연결에선 잘되던 빌드가 아카이빙에서만 빌드 에러를 뱉는 문제가 발생했다. 해당 문제를 정리하는 것부터 문제의 원인까지 차근차근 접근하다보면 해결되지 않을까 싶어 포스팅하게 되었다. Archive 시 Type '' has no member '' 문제 발생 위 사진처럼 에러가 나는데, 실제 파인더 경로에 가보면 정상적으로 파일들이 있고 해당 코드부분을 눌러보면 에러메시지가 사라진다. (에러 메시지가 사라지는게 가장 의문..) 문제될만한 곳..

    MPNowPlayingInfoCenter 제어센터 초기세팅 및 갱신하는 방법

    MPNowPlayingInfoCenter 제어센터 초기세팅 및 갱신하는 방법

    뮤직플레이어앱을 개발하면서 제어센터를 사용하기 위해 코드를 짰지만 webview에서 동영상을 재생하는 방식인 우리 앱에선 동작하지 않아 버리기엔 아까워 코드를 공유하고자 남깁니다. // 제어센터 초기세팅 import MediaPlayer func MPNowPlayingInfoCenterSetting() { // 제어 센터 이벤트 수신 시작 // Info.plist에 // UIBackgroundModes : audio 또는 // Required background modes : App plays audio or streams audio/video using AirPlay 해주어야 합니다. UIApplication.shared.beginReceivingRemoteControlEvents() let cente..

    UITableView 로 가사 기능(트래킹, 하이라이팅, 탐색) 개발 기록

    UITableView 로 가사 기능(트래킹, 하이라이팅, 탐색) 개발 기록

    왁타버스 뮤직 앱을 개발하면서 가사 기능을 구현했던 내용을 기록하기 위해 작성한 글입니다. 요구사항 및 결과 화면 1. 가사 트래킹 기능: 시간이 흐르면 재생중인 가사가 가운데로 스크롤되어야 함 2. 가사 하이라이팅 기능: 재생중인 가사를 하이라이팅해야 함 3. 스크롤 가사 탐색 기능 : 가사를 스크롤하면 멈춘 위치의 가사를 재생 기능 구현 트래킹 기능 1. JSON 으로 받아온 가사를 가사 딕셔너리로 변환 가사를 요청하면 아래와 같은 형식의 json이 날아옵니다. [{"identifier":"1","start":17.17,"end":19.9,"text":"기억나 우리 처음 만난 날","styles":""}, {"identifier":"2","start":19.9,"end":23.77,"text":"내게..

    Tuist Project 'Could not build Objective-C module' 오류 해결법

    Tuist Project 'Could not build Objective-C module' 오류 해결법

    Tuist 로 프로젝트를 진행하다가 Could not build Objective-C module 'RXSwift' 라는 오류메시지를 마주해 해결한 방법을 공유합니다. 1. XCode Settings -> Locations -> Derived Data 로 이동 2. XCode 를 종료합니다. 3. Derived Data 폴더에 많은 폴더들이 있을텐데, 문제가 되는 프로젝트명이 붙은 폴더를 전부 삭제합니다. (Ex: TestProject-dqiwebnaks) 4. tuist clean, tuist generate 를 순서대로 해줍니다. 5. xcworkspace를 열어 재빌드합니다. 위와같이해서 문제를 해결했습니다 !

    [SwiftUI] 사라질 때 transition이 적용안되는 경우 (SwiftUI removal transition not animated)

    [SwiftUI] 사라질 때 transition이 적용안되는 경우 (SwiftUI removal transition not animated)

    문제 Color 로 덮여있는 화면을 탭하면 Lottie 뷰가 아래에서 나타나고, Lottie 뷰를 다시 탭하면 아래로 사라지도록 했다. 뷰가 나타나는 건 잘되는데, 사라질 때 왜 애니메이션이 안먹을까? 원인 및 해결 ZStack { Color.green.ignoresSafeArea() if isAnimating { CustomLottieView() .transition(.move(edge: .bottom)) } } // @State isAnimating, onTapGesture 는 생략 위 코드처럼 구성이 되어있는데 .ignoresSafeArea() 를 풀어보면 removal transition 시, CustomLottieView 의 ZIndex 가 0으로 변경되면서 Color 보다 아래로 이동하여 애니..

    CocoaPods pod install 시 minimum deployment target 경고가 뜰 때

    CocoaPods pod install 시 minimum deployment target 경고가 뜰 때

    프로젝트를 Clone 후 의존성 설치를 위해 pod install 을 했다. 분명 예전에도 pod install 후 워닝이 떠서 minimum deployment target 를 최소 지원 버전과 맞춰 놨는데, pod install 을 하면 다시 초기화되는 경우가 발생했다. 새로운 팀원이 들어오거나 프로젝트 파일을 새로 여는 경우 매번 minimum deployment target 을 설정해주는건 번거로운 일이다. 그래서 이참에 자동화 하는 방법을 찾아서 적용해두었다.. # 이런 저런 초기 설정... target 'YourApp' do # 당신의 앱의 이런저런 외부 의존성... # ex) pod 'KakaoSDKTalk' # ex) pod 'Alamofire' end post_install do |ins..

    앱스토어 첫 심사와 리젝 대응 : Guideline 2.1

    앱스토어 첫 심사와 리젝 대응 : Guideline 2.1

    첫 심사 시험 하루 전날이었지만,첫 개인 앱이 세상 밖으로 나갈 준비를 마치니까 몸이 근질거려 시험공부는 때려치고 처음으로 심사를 넣어보았다! 앱스토어에 등록될 스크린샷(6.5/5.5)도 직접 만들고 인생 첫심사라니 뿌듯해하던것도 잠시 심사에 들어간지 2시간 정도만에 답장이 왔다. 첫 리젝 이게 뭐지? 하고 읽어보니 리젝당했다는 뜻이었다. 처음 읽을때만해도 통과는 됐는데 뭘 바꾸라는건가? 싶었음ㅋㅋㅋㅋㅋ 가이드라인과 함께 내용을 파파고와 함께 읽어보니 2.1 앱 완전성 앱 심사 팀에 제출하는 앱(사전 주문용 앱 포함)은 필요한 모든 메타데이터가 있고 URL이 정상적으로 작동하는 최종 버전이어야 합니다. 플레이스홀더 텍스트, 빈 웹 사이트와 기타 임시 콘텐츠는 제출하기 전에 삭제해야 합니다. 앱을 제출하기..