Skip to content

feat: 키링 스케일 통합 관리 시스템 구축#76

Merged
giljihun merged 18 commits into
developfrom
feature/-공통-키링-스케일-통합-관리-시스템-구축
Feb 10, 2026

Hidden character warning

The head ref may contain hidden characters: "feature/-\uacf5\ud1b5-\ud0a4\ub9c1-\uc2a4\ucf00\uc77c-\ud1b5\ud569-\uad00\ub9ac-\uc2dc\uc2a4\ud15c-\uad6c\ucd95"
Merged

feat: 키링 스케일 통합 관리 시스템 구축#76
giljihun merged 18 commits into
developfrom
feature/-공통-키링-스케일-통합-관리-시스템-구축

Conversation

@giljihun
Copy link
Copy Markdown
Member

@giljihun giljihun commented Feb 10, 2026

ㄹㅇ 대격변

🎯 PR 내용

키링 스케일을 중앙에서 관리하는 KeyringScale 시스템 구축.

템플릿별 크기, 화면별 줌, 뭉치 내 키링 스케일을 한 곳에서 관리.

1. KeyringScale 중앙 관리 시스템

  • 템플릿별 maxSize: 바디 이미지 최대 크기 (Polaroid, AcrylicPhoto, PixelKeyring 등)
  • 화면별 zoomScale: customizing / infoInput / complete 화면별 줌 배율
  • 뭉치용 bundleKeyringScale: 카라비너별 키링 축소 비율

2. 캐시 버전 관리

  • 스케일 로직 변경 시 기존 캐시 자동 무효화
  • 앱 시작 시 invalidateCacheIfScaleVersionChanged() 호출

이거 좀 중요한데, 보관함에 이미지들은 캐시로 계속 갖고있습니다. 삭제하지 않는이상.
그런데 이번에 스케일 관련된게 변하면서 이전에 갖고있던 캐시들이 수정이 되어야겠죠?
그래서 로컬로 버전 체크해서 기존 캐시 삭제 -> 재다운 로직을 추가했어요.

3. 셀 오토핏

  • 템플릿별 크기가 달라도 보관함 셀에서 일정한 패딩으로 표시

4. 다른 이슈였던 버그 수정

  • 키링 영상 추출 시 배경 제거 (기본값 nil로 변경)

리엘 새 템플릿 / 카라비너 추가 시 참고해주세요.

새 템플릿/카라비너 추가 시에, 스케일 케이스를 추가해야합니다!

KeyringScale.swift 에서 케이스 추가:

  // 1. 템플릿 추가
  private static let templateMaxSizes: [String: CGSize] = [
      "Polaroid": CGSize(width: 265, height: 324),
      "NewTemplate": CGSize(width: 200, height: 200),  // ← 추가
      ...
  ]

  private static let templateZoomScales: [String: [Screen: CGFloat]] = [
      "Polaroid": [.customizing: 1.0, .infoInput: 1.0, .complete: 0.7],
      "NewTemplate": [.customizing: 1.0, .infoInput: 1.0, .complete: 1.0],  // ← 추가
      ...
  ]

  // 2. 카라비너 추가
  private static let carabinerScales: [String: CGFloat] = [
      "carabiner_hook_01": 0.8,
      "new_carabiner_id": 0.75,  // ← 추가
      ...
  ]

📱 스크린샷 (UI 변경 시)

셀에서 동적인 fit 로직 구현

템플릿별 키링 사이즈가 다름 -> 셀에서도 동적으로 스케일이 조정되게 (훨씬 자연스러운듯)

이 밖에 나머지는 후에 실기기 테스트로 확인 해보십시오.

🔗 관련 이슈

✅ 체크리스트

  • 빌드 성공
  • 테스트 완료
  • Self-review 완료

모든 키링 만들어보고, 뭉치에도 걸어보고 테스트 완료입니다.

…eychyApp into feature/-공통-키링-스케일-통합-관리-시스템-구축
- KeyringScale.maxSize(for:) 사용하여 템플릿별 크기 적용
- 중복 함수 제거 (createMiniImageBody, createMultiImageBody)
- SKCameraNode 사용하여 물리 시뮬레이션 영향 없이 스케일 조정 (이런거도 있더군요)
- KeyringSceneView, VideoGenerator 호출부 수정
- createMiniImageBody에서 KeyringScale.maxSize 사용
- 셀 auto-fit 기능 추가 (autoFitKeyringToCell)
- KeyringData 구조체에 templateId 추가
- createBodyNode에서 KeyringScale 사용
- bundleKeyringScale 적용을 위한 인프라
- KeyringScale 변경 시 자동 캐시 무효화
- 앱 시작 시 invalidateCacheIfScaleVersionChanged 호출
- Polaroid maxSize 미세 조정 (263x321 → 265x324)
- SpeechBubble maxSize 가로/세로 수정 (249x360 → 360x249)
- Polaroid 완성뷰 zoomScale 0.7로 설정
- 최소화 -> 1.2에서 1.0
- 최대화 -> 0.7에서 0.6
(키링이 시트에 너무 가려지던거 수정)
- Ring, Chain 노드에 bundleScale 적용
- Chain 간격도 bundleScale에 맞게 조정
- Body 크기에 bundleScale 적용
- MultiKeyringCaptureScene에 carabinerId 파라미터 추가
- captureBundleImage에 carabinerId 파라미터 추가
- Ring, Chain, Body에 bundleScale 적용
- 호출부 업데이트: BundleGridItem, BundleDetailView+SaveImage,
    BundleCreateView+Capture, BundleCompleteView+SaveImage,
    BundleEditView+Capture
@giljihun giljihun requested a review from jini-coding February 10, 2026 15:38
@giljihun giljihun self-assigned this Feb 10, 2026
@giljihun giljihun linked an issue Feb 10, 2026 that may be closed by this pull request
@giljihun giljihun merged commit 20c54f6 into develop Feb 10, 2026
@giljihun giljihun deleted the feature/-공통-키링-스케일-통합-관리-시스템-구축 branch February 10, 2026 15:51
@jini-coding
Copy link
Copy Markdown
Member

완전 대격변이네요 훨씬 자연스러워진듯!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Feature: [공통] 키링 스케일 통합 관리 시스템 구축

2 participants