1. 카드 내리는 애니메이션
- 이미지 내릴 때 코드 Resize 코드 추가하기 전에 끌어 내려도 다시 원래대로 돌아가는 코드 참고
일정 y값까지 내려지면, 화면 뙇~ 나오기
그런데 내렸을때, 자연스럽게 공간이 보이는건가 ,,,? 아니면 알파값이 쏴~ 하면서 보이는건지.
그리고 아래 초대장을 내렸을 때 윗 부분은 어떻게 되는건지
UISwipeGesture? UIPanGesture? 를 써야하는건지, 아니면 Scroll 처럼 해도 되는건지 ,,,,,
(내얼굴 이렇게 나오는거 부담스럽네)
2. 글자 수에 맞게 layout 동적으로 맞추기
-stackView 사용
https://ios-development.tistory.com/345
-sizeToFit 함수 사용 (sizeThatFits말고)
https://jintaewoo.tistory.com/27
3. 디데이 세는 서버통신
희재꺼,,, 쓱싹해왔다,,
나 할 수 있겠지 ,,, ? 할 수 있다.
//VC
public var index: Int = 0 {
didSet {
timer?.cancel()
timer = nil
self.endDate = self.productData[self.index].endDate
self.calculateRemainngTime()
// self.rootView.productCollectionView.reloadData()
}
}
public var endDate: String? {
didSet {
startTimer(self.hour, self.minute, self.second)
self.rootView.productCollectionView.reloadData()
}
}
//서버에서 받아온 시간 형식에 맞게 맞춰주는 부분
func calculateRemainngTime() {
let format = DateFormatter()
format.dateFormat = "yyyy-MM-dd HH:mm:ss"
//1. 주어진 시간 DataFormat으로 바꾸기
guard let endDate = self.endDate else { return }
let formatEndDate: String = endDate.replacingOccurrences(of: "T", with: " ")
guard let endTime = format.date(from: formatEndDate) else { return }
//2. 현재 시간 DataFormat으로 바꾸기
let currentTime = Date()
//3. 두 개 시간 빼주기
let useTime = Int(endTime.timeIntervalSince(currentTime))
let hour = useTime / 3600
let minute = (useTime % 3600) / 60
let second = (useTime % 3600) % 60
self.hour = hour
self.minute = minute
self.second = second
}
// [실시간 반복 작업 시작 호출]
func startTimer(_ hour: Int, _ minute: Int, _ second: Int) {
if timer == nil {
timer = DispatchSource.makeTimerSource(flags: [], queue: DispatchQueue.main)
timer?.schedule(deadline: .now(), repeating: 1)
timer?.setEventHandler(handler: {
self.timerCallback()
})
timer?.resume()
}
}
// [실시간 반복 작업 수행 부분]
func timerCallback() {
var timeChecker: TimeCheker?
if self.second > 1 { timeChecker = .second }
else if self.second <= 1 && self.minute > 0 { timeChecker = .minute }
else if self.second <= 0 && self.minute <= 0 && self.hour > 0 { timeChecker = .hour }
else { timeChecker = .end}
self.endDate = timeChecker?.currentTime(hour: self.hour, minute: self.minute, second: self.second)
self.second += timeChecker?.secondResult ?? 0
self.minute += timeChecker?.minuteResult ?? 0
self.hour += timeChecker?.hourResult ?? 0
}
4. 아티클 받아오는 법
이건 희재가 알려준 대로 "우리만의 문법" 을 쓰기로 하였다
코드 짜기 전에 확실하게 정리해둬야 알듯함
'32YB SOPT > APPJAM - PPPClub' 카테고리의 다른 글
[Swift] UIPanGestureRecognizer 에서 touch(.changed) 중에 뷰 넘어가도록(.end 실행) 코드 수정 (0) | 2023.07.20 |
---|---|
[PPPClub] 프로젝트 구조 설계 (0) | 2023.07.11 |
[PPPClub] 초대장이 열리는 애니메이션 (1) | 2023.07.07 |
[PPPClub] Text 길이만큼 Label Size 동적할당 (0) | 2023.07.07 |