분류 전체보기

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

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 로 프로젝트를 진행하다가 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를 열어 재빌드합니다. 위와같이해서 문제를 해결했습니다 !
![[백준] BOJ-15649 N과 M (1)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FKTNmH%2FbtrSqXX0l7B%2FAAAAAAAAAAAAAAAAAAAAADWOfISbRQOn6o2Qe30VyYVva6UoLInkwSFuvZtdLtu4%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3Dph8cBqwwFsNIAUYmBJNAUFcUZ8k%253D)
[백준] BOJ-15649 N과 M (1)
문제 N과 M을 입력받아 nPm 의 순열을 구하는 문제였다. 풀이 import Foundation let nm = readLine()!.split(separator: " ").map { Int($0)! } let n = nm.first! let m = nm.last! let nums = Array(1...n) // [1, 2, ..., n] /// nPr func permutation(n elements: [Int], r: Int) -> [[Int]] { var result = [[Int]]() var visited = [Bool](repeating: false, count: n) func permu(_ temp: [Int]) { if temp.count == r { result.append(temp) ..
![[SwiftUI] 사라질 때 transition이 적용안되는 경우 (SwiftUI removal transition not animated)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbJBHV5%2FbtrSq8Zo4Af%2FAAAAAAAAAAAAAAAAAAAAAG8UmEUoT-BJqFX_6oPs-u_46jXDvix7DAFCiDX6b8c3%2Fimg.gif%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3Db35O2VVVRm9N45kinZrT4pXDcB8%253D)
[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 보다 아..
![[백준] BOJ-14889 스타트와 링크](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FHgaZg%2FbtrSa77Wphs%2FAAAAAAAAAAAAAAAAAAAAAPOLqV6olsaAMPbrCcH8BP8rt75MX7q4gGY38ocyAUO0%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3DP7EFfe04BKt5Z%252FIj22OXq4PTBb8%253D)
[백준] BOJ-14889 스타트와 링크
문제 문제 풀이 알고리즘 스터디 1주차 문제로, DFS, 백트래킹 알고리즘으로 접근하며 문제풀이를 시작했다. 백트래킹은 "DFS를 기반으로 하며, 어느 정도의 Depth 에 도달하면 탐색을 중단 하는 알고리즘" 정도로 이해하고 접근했다. n이 무조건 짝수로 제공되고, 절반 씩 팀을 나누기 때문에 dfs로 순차 탐색을 진행하다가 n / 2 일 경우 탐색을 중단하고 팀원을 구성하도록 했다. 두 팀간의 능력치 차이가 가장 적은 경우의 능력치 차이를 출력하는 문제이기에 result 변수의 초기값을 Int.max 로 설정해둔 후, min() 과 abs() 함수를 사용해 두 팀 간의 능력치 차이를 구하고 result 와 비교해 더 적은 값으로 업데이트 하도록 했다. import Foundation let n = I..