sookim-1

번호 : 024, 작성일자: 2024-07-15

2024.07.09 ~ 2024.07.14

🚨 Github-Blog 워크플로 수정


해당 블로그를 포스팅하는 🔗 Github 블로그 저장소의 배포 관련에서 Github Workflow가 에러가 발생했다.

해당 저장소의 배포관련해서는 2가지 워크플로가 있다.

  1. ci.yml : 빌드와 make 명령어가 정상적으로 되는지 확인하는 워크플로
  2. deploy.yml : 출력된 결과를 🔗 sookim-1.github.io 저장소로 덮어쓰는 워크플로

해당 워크플로들을 수정하여 에러를 수정했다.

첫번째로는 워크플로를 동작하는 머신의 ubuntu버전이 node버전과 맞지 않았고, ubuntu 버전을 20.04로 올리면서 swift버전도 맞췄다. 또한 swift는 이미지로 설정했다.

2번째로는 배포되는 🔗 sookim-1.github.io 저장소에서 GoogleSearchConsole, Naver웹마스터도구의 html파일, robots.txt 파일이 덮어써지면서 제거되는 문제가 있어서 🔗 Github 블로그 저장소에 파일을 옮긴 후 출력된 결과폴더에 추가되도록 수정했다.

3번째로는 중복된 단계가 많아서 결국 ci.yml과 deploy.yml은 연달아 동작하기 때문에 build-and-deploy.yml로 통합했다.

⌨️ becomeFirstResponder


화면에 진입할 때 UITextField의 포커싱을 맞추기 위해서 viewWillAppear에 becomeFirstResponder를 실행했는데 viewWillAppear는 뷰가 완전히 로드되지 않은 상태여서 화면이 버벅이는 이슈가 있었다.

viewDidAppear에서 becomeFirstResponder를 실행하면 뷰가 완전히 로드된 후 호출되기 때문에 버벅이지는 않지만 약간의 속도가 느린 느낌이 들었다.

화면에 진입할 때 UINavigationController의 pushViewController 메서드의 애니메이션을 비활성화하니까 애니메이션처리가 생략되어 버벅이지 않았다.

여기서 애니메이션을 비활성화하고 비슷한 느낌을 주기위해서 화면전환하는 경우 커스텀애니메이션을 처리해서 해결했다.

extension UINavigationController {
    func pushViewControllerCustomAnimation(_ vc: UIViewController) {
        let transition = CATransition()
        transition.duration = 0.3
        transition.type = CATransitionType.push
        transition.subtype = CATransitionSubtype.fromRight
        transition.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeInEaseOut)
        
        view.layer.add(transition, forKey: kCATransition)
        pushViewController(vc, animated: false)
    }

    func popViewControllerCustomAnimation(completion: @escaping () -> Void) {
        let transition = CATransition()
        transition.duration = 0.3
        transition.type = CATransitionType.push
        transition.subtype = CATransitionSubtype.fromLeft
        transition.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeInEaseOut)

        view.layer.add(transition, forKey: kCATransition)
        popViewController(animated: false, completion: completion)
    }
}

🙋🏻‍♂️ 기타 사항


  1. git credential osxkeychain이 접근할 때마다 팝업이 발생해서 .gitconfig파일에 [credential] helper = osxkeychain를 추가했다. $ git config --global credential.helper osxkeychain
  2. Firebase Crashlytics의 맞춤설정방법, Firebase TestLab 제품들에 대해서 찾아보고 테스트를 해보았다.
  3. Swift Package, SPM의 개념과 프로젝트생성방법을 정리했다. 추후 구조에 대해서 추가해야겠다.
  4. Xcode 16, Swift 6, SF Symbol 6, macOS Sequoia 주요 변경사항들을 간단히 보았는데 정식버전이 출시되면 바로 업그레이드 하는 것도 고려해봐야겠다.
  5. 앱스토어커넥트의 접근계정을 정리했다.
태그: