Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

UserBoxView 버튼 클릭 버벅임 현상 수정 및 UserInfoCollectionView Compositional layout으로 마이그레이션 #71

Merged
merged 9 commits into from
Apr 17, 2024

Conversation

Minny27
Copy link
Member

@Minny27 Minny27 commented Mar 12, 2024

Motivation ⍰

  • 버튼 클릭 버벅임 현상 수정
  • UserInfoCollectionView Compositional layout으로 마이그레이션
  • 원형 타이머 dot과 stoke가 이루는 각도를 30도로 가정해서 위치 수정
  • 0초 위치 수정

Key Changes 🔑

미리보기는 다음과 같습니다.

더블 클릭 이벤트와 중첩되서 infoBoxView에 있는 버튼을 클릭했을 때 버벅였던 것으로 확인되어
타이머, 버튼 박스 부분을 제외한 프로필 컬렉션 뷰를 더블 클릭했을 때만 정지되도록 구현

cell에 bind할 때 더블 클릭 트리거를 구독해서 프로필, 멈춤 뷰 더블 클릭 이벤트를 머지한 것을 바인딩했습니다.

코드는 다음과 같습니다.

// FallingHomeViewController
let profileDoubleTapTriggerObserver = PublishSubject<Void>() // 셀에서 구독할 subject
    
    let profileDoubleTapTrigger = profileDoubleTapTriggerObserver // 더블 클릭 이벤트가 발생할 때마다 timerActiveRelay의 최신 값과 합성
      .withLatestFrom(timerActiveRelay) { !$1 }
      .asDriverOnErrorJustEmpty()
    
    Driver.merge(profileDoubleTapTrigger, viewWillDisAppearTrigger)
      .drive(timerActiveRelay)
      .disposed(by: disposeBag)
    
    let input = FallingHomeViewModel.Input(
      initialTrigger: initialTrigger,
      timeOverTrigger: timerOverTrigger,
      cellButtonAction: fallingCellButtonAction.asDriverOnErrorJustEmpty()
    )
// FallingUserCollectionViewCell

func bind<O> {
  let profileDoubleTapTrigger = self.profileCollectionView.rx
        .tapGesture(configuration: { gestureRecognizer, delegate in
          gestureRecognizer.numberOfTapsRequired = 2
        })
        .when(.recognized)
        .mapToVoid()
        .asDriverOnErrorJustEmpty()
      
      let pauseViewDoubleTapTrigger = self.pauseView.rx
        .tapGesture(configuration: { gestureRecognizer, delegate in
          gestureRecognizer.numberOfTapsRequired = 2
        })
        .when(.recognized)
        .mapToVoid()
        .asDriverOnErrorJustEmpty()
      
      Driver.merge(profileDoubleTapTrigger, pauseViewDoubleTapTrigger)
        .map { _ in }
        .drive(profileDoubleTapTriggerObserver)
        .disposed(by: disposeBag)
}

현재 UserCardInfoCollectionView(info 버튼 클릭했을 때 나오는 뷰)를 더블 클릭했을 때도 정지를 하게 하려고 했으나,
UserCardInfoCollectionView안에 있는 report 버튼이 또 버벅이는 문제로 구현하지 않았습니다.
UserCardInfoCollectionView, 그 안에 있는 TextView의 동적 높이는 구현이 아직 안 되어 있습니다.
또한, pageControl도 아직 구현 전입니다.


To Reviewers 🙏🏻

  • UserCardInfoCollectionView가 디자인대로 잘 반영됐는 지 확인해주세요.
  • 버튼 클릭 시, 버벅임이 없는지 확인해주세요.

Linked Issue 🔗

Minny27 added 7 commits March 12, 2024 13:28
- 더블 클릭 이벤트와 중첩되서 infoBoxView에 있는 버튼을 클릭했을 때 버벅였던 것으로 확인
- infoBoxView를 profile collection view와 분리
- UserInfoCollectionView에서도 중지가 가능하도록 구현은 했으나
- UserInfoCollectionView에서도 report 버튼이 있다보니 없앴음
- 더블 클릭 트리거를 cell에 넘겨준 것을 구독해서 멈춤 뷰 혹은 프로필 탭 시 이벤트 전달하는 방식으로 구현
- 원형 타이머 dot과 stoke가 이루는 각도를 30도로 가정해서 위치 수정
- 0초 위치 수정
- compositional layout의 섹션마다 다양한 타입의 아이템을 리턴하기 위함
- EmojiType hashable 준수
- FallingUserInfoItem을 diffable DataSource에 적용
- 아이템, 행, 섹션 간격 및 폰트 적용
- 필요 없는 코드 삭제
- pageControl 구현
- 아직 스크롤에 대한 이벤트 처리는 안 됨.
- 일부 제약조건 수정
@Minny27 Minny27 added the 🦊 Feature New feature or request label Mar 12, 2024
@Minny27 Minny27 requested review from ibcylon and ChaNoo97 March 12, 2024 04:52
@Minny27 Minny27 self-assigned this Mar 12, 2024
Copy link
Member

@ibcylon ibcylon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니다.

@Minny27 Minny27 merged commit e00764a into main Apr 17, 2024
@Minny27 Minny27 deleted the feat/infobox_detail branch April 17, 2024 10:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🦊 Feature New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants