TIL - 2024.03.19 화요일 (개인프로젝트 16일차)

· 성취/개선/학습한 내용 🏆

 파티클 애니메이션을 구현하기 위해 CAEmitterLayer에 대해서 공부를 해보았다. 생각보다 사용하는 방법이 어렵지는 않았지만, 이모지를 이미지로 써서 파티클 애니메이션을 구현하고 싶다는 생각이 들어서 이 부분을 처리하는데 시간을 좀 더 사용한 것 같다. 검색을 해보니 이 역시도 쉽게 메서드 하나로 바꿀 수 있었다. 이를 통해 스프라이트 킷의 느낌과 비슷하게 물리 법칙을 가진 애니메이션을 만들어서 사용할 수 있었다. 

 또 정답이 일치하는지 확인하는 과정에서 정규식을 이용하면 내가 원하는 문자, 숫자 등만 가져와서 비교할 수 있다는 것을 알게 되었다. 지금 하는 개인프로젝트가 영화 이름을 맞추는 것이다 보니 사용자에게 띄어쓰기와 각종 특수문자까지 짧은 시간 내에 맞추라고 하는 것은 무리가 있다. 그래서 이 정규식을 통해 띄어쓰기, 특수문자를 제거해서 정답처리를 할 수 있게 되었다. 개인적인 생각이지만 정규식의 pattern을 입력하는 방식이 생각보다 직관적이지만 굉장히 낯선 포맷이라 신기하고 되게 이상한 느낌이었다.

  • CAEmitterLayer
  • CAEmitterCell
  • keyboard return type
  • 정규식 

· 경험한 이슈 😫

  • UIViewController+Extension에 customBackButton을 구현을 했다. 그런데 BackButton이 클릭될 때, 추가적인 액션을 넣고 싶은데 @objc func은 그것이 힘들어서 어떻게 하면 추가할 수 있을까 고민을 했다. 여러가지를 고민해 보니 답은 간단했다. 내가 사용할 뷰컨트롤러에서 BackButtonClicked 메서드를 override 해주면 되는 것이었다.! 
    //UIViewController+Extension
	func setNavigationBackButton() {
        hideBackButton()
        let backButton = UIBarButtonItem(image: UIImage(systemName: "chevron.left"), style: .plain, target: self, action: #selector(backButtonClicked))
        navigationItem.leftBarButtonItem = backButton
    }
    
    func hideBackButton() {
        navigationItem.setHidesBackButton(true, animated: true)
    }
    
    @objc
    func backButtonClicked() {
        navigationController?.popViewController(animated: true)
    }

 

    //ViewController
	// ViewDidLoad에서 setNavigationBackButton 호출은 필요!
	override func backButtonClicked() {
        super.backButtonClicked()
        self.viewModel.inputInvalidTimerTrigger.value = ()
    }

 

· 고민되는 지점 ⁉️🤔

  • 기능들과 UI를 구현하면서 기존에 써놓았던 글씨체를 한 번에 바꾸는 방법은 없는지 궁금하다. 글씨체를 내 프로젝트로 가져와서 다 바꿔줘야 하나... 상당히 시간이 오래 걸리는 작업일 텐데.. 다른 방법이 없는지 고민이 된다.

· 생각보다 덜/더 걸리는 작업과 그 이유  😱/🥴

  • 비즈니스 로직을 분리해서 뷰모델로 전환하는 작업이 생각보다 적게 걸렸다. 이제 나름 어떻게 해야할지 익숙해져서 빠르게 작업을 끝낸 것으로 추측된다.
  • 파티클 애니메이션을 구현하는데 생각보다 시간이 약간 더 걸렸다. 어떤 방식으로 구현할지 처음에는 힌트 조차 몰랐기 때문에 검색에도 시간을 좀 써서 그런 것 같다. 생각보다 구현은 쉬웠지만, 메서드로 만들고 메모리에서 제거하는 작업까지 하는 데 시간이 좀 걸렸다.

· 느낀점 🌟

 새로운 무언가를 찾아서 내 것에 적용시켜 보는 경험은 정말 재밌고 새로운 것 같다. 특히 이번엔 애니메이션 같은 것을 많이 접해보고 있는데, 이 애니메이션이 제대로 작동할 때마다 가시적으로 보이는 변화가 있어서인지 더 재밌는 것 같다.