Search

인용구 앱(기간: 7일)

About

AVFoundation을 이용해서 버튼에 햅틱 효과를 추가함
문자열에 Timer를 이용해서 각 문자에 타이핑 효과를 넣음

사용된 오픈소스라이브러리

ViewAnimator

사용된 프레임워크

AVFoundation

주요 코드

[ 타이핑 효과 및 특정 문자 커스텀 ]
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { var charIndex = 0.0 let text = """ "마이웨이"는 당신의 자존감을 한층 더 높이고 다른 사람들의 영향에 쉽게 흔들리지 않으면서 자신만의 길을 당당하게 걸어가는 데 도움을 주는 앱입니다. """ for letter in text { Timer.scheduledTimer( withTimeInterval: 0.1 * charIndex, repeats: false ) { timer in let attributedText = NSMutableAttributedString(attributedString: self.mainLabel.attributedText ?? NSAttributedString() ) let letterString = String(letter) if letterString == "마" { attributedText.append( NSAttributedString( string: letterString, attributes: [.foregroundColor: UIColor.red] ) ) } else { attributedText.append(NSAttributedString(string: letterString)) } self.mainLabel.attributedText = attributedText } charIndex += 1 } }
Swift
복사
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) 를 사용하여 메인 스레드에서 0.5초의 지연 후에 블럭 내의 코드를 실행한다. → 애니메이션 시작 전에 짧은 지연을 제공하여 뷰가 자연스럽게 이어지도록 함
var charIndex = 0.0 은 문자의 인덱스를 추적하기 위한 변수이다. 이 인덱스는 각 문자에 대한 타이머의 시작 시간을 결정하는데 사용된다.
for letter in text 를 사용하여 ‘text’ 변수에 있는 각 문자를 반복 실행한다.
Timer.scheduledTimer(withTimeInterval: 0.1 * charIndex, repeats: false) { timer in 은 0.1초 x 문자의 인덱스만큼 지연된 타이머를 생성한다. → 각 문자가 하나식 차례대로 나타내기 위해서
let letterString = String(letter) 는 현재 반복 중인 문자를 문자열로 바꾼 뒤, if letterString == "마" 문자열 중에 ‘마’라는 글자만 빨간색 글자로 커스텀한다.