ohdair / GesturableGraph

1 stars 0 forks source link

layoutSubviews 재정의에 관한 수정 #13

Open ohdair opened 1 year ago

ohdair commented 1 year ago

해당 라이브러리는 기본적으로 지정된 레이아웃이 존재합니다. 하지만 사용하고자 하는 사용자가 속성값을 변경하게 되면 그래프 및 관련 뷰들의 레이아웃이 변경됩니다.

코드에서는 layoutSubviews를 재정의해서 사용했기에 아래 문서에서 언급한 내용과는 다르다고 판단되어 수정을 하려합니다.

Changing Constraints

ohdair commented 1 year ago

constant의 값을 변경하려고 시도

  1. lessThanOrEqualTo 혹은 greaterThanOrEqualTo로 기본 레이아웃으로 설정
  2. 값 변경되면 constant 변경
  3. 해당 View가 Spacing 없이 너비가 줄어듬, 🚧 문제 발생 🚧
ohdair commented 1 year ago

constraint를 Activating 혹은 deactivating

  1. deactiving 한다고 해서 변화는 없음
  2. widthAnchor에 priority를 높여서 추가
  3. 제대로 동작을 함
  4. 사용자가 속성을 한 번이 아닌 두 번 변경한다면, 🚧 문제 발생 🚧
ohdair commented 1 year ago

removeConstraint 사용

  1. 초기 오토레이아웃 설정
  2. 값이 변경되면 width Constraint를 제거
  3. 새로운 width Constraint 활성화
    
    private lazy var stackViewWidth = stackView.widthAnchor.constraint(equalTo: widthAnchor, multiplier: 1 - distribution)

var distribution: CGFloat = 0 { didSet { removeConstraint(stackViewWidth) stackViewWidth = stackView.widthAnchor.constraint(equalTo: widthAnchor, multiplier: 1 - distribution) stackViewWidth.isActive = true } }