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 == "마" 문자열 중에 ‘마’라는 글자만 빨간색 글자로 커스텀한다.