question,image,options 간의 간격이 너무 커서 가독성이 떨어지는 문제및 각 부분의 충돌 현상 해결

문제의 원인은 

아래와 같은 세 제약 조건을 수학적으로 동시에 만족할게 할수가 없었기 때문입니다. 

 1.이미지뷰까지 20포인트 간격 

 2.질문 레이블에서 옵션 스택뷰까지 10포인트 간격 

 3.이미지뷰에서 옵션 스택뷰까지 20포인트 간격

해결방법은:

다음과 같은 제약 조건 변수들을 선언합니다

   private var questionToOptionsConstraint: NSLayoutConstraint!
 private var questionToImageConstraint: NSLayoutConstraint! 
private var imageToOptionsConstraint: NSLayoutConstraint!


setupConstraints() 메서드에서 이 제약 조건들을 초기화하되, 아직 활성화하지 않습니다.

questionToOptionsConstraint = optionsStackView.topAnchor.constraint(equalTo: questionLabel.bottomAnchor, constant: 10)

questionToImageConstraint = imageView.topAnchor.constraint(equalTo: questionLabel.bottomAnchor, constant: 20)

imageToOptionsConstraint = optionsStackView.topAnchor.constraint(equalTo: imageView.bottomAnchor, constant: 20)

displayQuestion() 메서드에서 이미지 유무에 따라 적절한 제약 조건만 활성화합니다

// 먼저 모든 잠재적 충돌 제약 조건을 비활성화
NSLayoutConstraint.deactivate([
    questionToOptionsConstraint,
    questionToImageConstraint,
    imageToOptionsConstraint
])

if 이미지가_있는_경우 {
    // 이미지 관련 제약 조건만 활성화
    NSLayoutConstraint.activate([
        questionToImageConstraint,
        imageToOptionsConstraint
    ])
} else {
    // 이미지 없이 직접 질문-옵션 연결 제약 조건만 활성화
    NSLayoutConstraint.activate([
        questionToOptionsConstraint
    ])
}

이런 방식으로 이미지가 있을 때는 일반적인 간격을 유지하고, 이미지가 없을 때는 질문과 옵션 사이의 간격을 줄여 가독성을 높일 수 있었습니다.

댓글

이 블로그의 인기 게시물

비주얼 스튜디오 코드에서 깃허브에 프로젝트 올리는 법

Git rebase Github에 다시 프로젝트 올리기

React Native 앱에서 ProGuard 난독화 설정