상위 뷰의 맨 아래에서 레이블을 25 포인트 위로 이동시키는 자동 레이아웃 제약 조건을 프로그래밍 방식으로 만들었습니다. 이 장면에서 정의한 다른 제한 사항은 없습니다. 25는 대부분의 기기에서 문제가 없지만 iPhone 4에서는 너무 멀리 있습니다. 나는 그 화면 크기의 바닥에서 15 정도 위로하고 싶다. 그러나 모든 화면 크기에 대해 고정 값을 적용하거나 특정 화면 크기 하나를 변경하려고 시도하는 대신 변수 상수를 얻는 것이 훨씬 더 바람직하다고 생각했습니다. 그러나 자동 레이아웃에서는 이것이 불가능한 것처럼 보입니다. 그렇지?뷰의 높이 또는 화면 높이를 기반으로 NSLayoutConstraint 상수를 설정하십시오.
변수 상수를 얻는 한 가지 방법은 화면 (또는 뷰) 높이를 기준으로 값을 계산하는 것입니다. 예를 들어, 상수는 self.view.frame.size.height/30
과 같습니다. iPhone 4 (세로 전용)에서는 16, iPhone 5는 거의 19 등입니다. 이것이 완벽 할 것입니다. 또는 다른 방법으로 높이의 3 %. 이러한 값은 높이가 변경 될 때 회전에 대해 동적이어야합니다.
일부 계산 또는 화면 /보기 높이를 기반으로하는 변수 상수가있는 자동 레이아웃 제약 조건을 사용할 수 있습니까? 아니면 고정 된 자동 레이아웃 상수를 피하면서 원하는 동작을 얻을 수있는 다른 솔루션이 있습니까?
여기 viewDidLoad
에서, 몇 가지 예제 코드입니다 :
let footerLabel = UILabel()
footerLabel.text = "my text"
footerLabel.sizeToFit()
footerLabel.setTranslatesAutoresizingMaskIntoConstraints(false)
self.view.addSubview(footerLabel)
self.view.addConstraint(NSLayoutConstraint(item: footerLabel, attribute: .Bottom, relatedBy: .Equal, toItem: self.view, attribute: .Bottom, multiplier: 1, constant: -25))
self.view.addConstraint(NSLayoutConstraint(item: footerLabel, attribute: .CenterX, relatedBy: .Equal, toItem: self.view, attribute: .CenterX, multiplier: 1, constant: 0))
프로그래밍 방식으로 말하면 코드 또는 스토리 보드에서 제약 조건을 만들었다는 것을 의미합니까? – Spectravideo328
@ Spectravideo328, 코드에서'viewDidLoad' – Joey
그래서 사용할 수 없습니다 : self.myConstraint.constant = myVariableDistanceValue; – Spectravideo328