다음과 같이 사용자에게 우승 한 게임의 수를 보여주기 위해 작성된 하위보기가 있습니다. 녹색보기의 너비는 슈퍼 뷰의 너비에 게임 분수 (이 경우 .5)를 곱한 값과 녹색보기의 너비 제한을 계산 된 값으로 변경합니다. iOS의 너비가 올바르게 계산되지 않음
let percent = Float(won)/Float(self.partiesPlayed) //percent of games won, should be .5
let width = CGFloat(percent) * self.winLoseView.bounds.size.width //multiply width of superview by percent
self.greenWidthConstraint.constant = CGFloat(width) //change constraint's constant
UIView.animateWithDuration(2, animations: { // animate change
self.view.layoutIfNeeded()
})
문제는 너비가 수퍼의 정확히 절반으로 표시되지 않는 예에서, 예를 들어, 정확하게 올바른 것으로 표시되지 않는다는 것이다.
당신이 자동 레이아웃을 사용하고 있습니까? –
예. 뷰의 너비를 변경하는 대신 너비 제약 조건을 변경하고 제약 조건을 다시로드합니다. – milesper
설명에 따르면 ("정확하지 않습니다.") ... 바쁜 질문 : NSLog 및/또는 디버거를 통해 데이터 문제 (녹색 너비가 잘못 설정 됨)인지 또는 제약/레이아웃 문제 (값이 올바르게 설정되었지만 결과 레이아웃 시스템이 예상 한 것과 다릅니다)? –