나는이 UIView
내가 엑스 코드 인터페이스 빌더를 사용하여 제약 조건을 설정합니다.
이제 UIView's
프로그래밍 방식으로 높이 상수 를 업데이트해야합니다 .
와 같은 기능이 myUIView.updateConstraints()
있지만 사용 방법을 모르겠습니다.
나는이 UIView
내가 엑스 코드 인터페이스 빌더를 사용하여 제약 조건을 설정합니다.
이제 UIView's
프로그래밍 방식으로 높이 상수 를 업데이트해야합니다 .
와 같은 기능이 myUIView.updateConstraints()
있지만 사용 방법을 모르겠습니다.
답변:
인터페이스 빌더에서 높이 제약 조건을 선택하고 출구를 가져옵니다. 따라서 뷰의 높이를 변경하려면 아래 코드를 사용할 수 있습니다.
yourHeightConstraintOutlet.constant = someValue
yourView.layoutIfNeeded()
메서드 updateConstraints()
는의 인스턴스 메서드입니다 UIView
. 프로그래밍 방식으로 제약 조건을 설정할 때 유용합니다. 뷰에 대한 제약 조건을 업데이트합니다. 자세한 내용은 여기를 클릭 하십시오 .
여러 제약 조건이있는 뷰가있는 경우 여러 출력을 만들지 않고도 훨씬 더 쉬운 방법은 다음과 같습니다.
인터페이스 빌더에서 식별자를 수정하려는 각 제약 조건을 지정하십시오.
그런 다음 코드에서 다음과 같이 여러 제약 조건을 수정할 수 있습니다.
for constraint in self.view.constraints {
if constraint.identifier == "myConstraint" {
constraint.constant = 50
}
}
myView.layoutIfNeeded()
여러 제약 조건에 동일한 식별자를 제공하여 제약 조건을 그룹화하고 한 번에 모두 수정할 수 있습니다.
변경 HeightConstraint
및 WidthConstraint
생성하지 않고 IBOutlet
.
참고 : 스토리 보드 또는 XIB 파일에서 높이 또는 너비 제한을 지정하십시오. 이 확장을 사용하여이 Constraint를 가져온 후.
이 확장을 사용하여 높이 및 너비 제약 조건을 가져올 수 있습니다.
extension UIView {
var heightConstraint: NSLayoutConstraint? {
get {
return constraints.first(where: {
$0.firstAttribute == .height && $0.relation == .equal
})
}
set { setNeedsLayout() }
}
var widthConstraint: NSLayoutConstraint? {
get {
return constraints.first(where: {
$0.firstAttribute == .width && $0.relation == .equal
})
}
set { setNeedsLayout() }
}
}
당신이 사용할 수있는:
yourView.heightConstraint?.constant = newValue
first(where: ...)
바로 대신 사용할 수 filter
+first
제약 조건을 VC에 IBOutlet으로 드래그합니다. 그런 다음 관련 값 (및 기타 속성, 설명서 확인)을 변경할 수 있습니다.
@IBOutlet myConstraint : NSLayoutConstraint!
@IBOutlet myView : UIView!
func updateConstraints() {
// You should handle UI updates on the main queue, whenever possible
DispatchQueue.main.async {
self.myConstraint.constant = 10
self.myView.layoutIfNeeded()
}
}
원하는 경우 부드러운 애니메이션으로 제약 조건을 업데이트 할 수 있습니다. 아래 코드 덩어리를 참조하십시오.
heightOrWidthConstraint.constant = 100
UIView.animate(withDuration: animateTime, animations:{
self.view.layoutIfNeeded()
})
먼저 아래 코드와 같이 IBOutlet을 만들기 위해 뷰 컨트롤러에 높이 제약 조건을 연결합니다.
@IBOutlet weak var select_dateHeight: NSLayoutConstraint!
그런 다음 아래 코드를보기에 넣거나 어떤 작업이든
self.select_dateHeight.constant = 0 // we can change the height value
버튼 클릭 안에 있으면
@IBAction func Feedback_button(_ sender: Any) {
self.select_dateHeight.constant = 0
}
Create an IBOutlet of NSLayoutConstraint of yourView and update the constant value accordingly the condition specifies.
//Connect them from Interface
@IBOutlet viewHeight: NSLayoutConstraint!
@IBOutlet view: UIView!
private func updateViewHeight(height:Int){
guard let aView = view, aViewHeight = viewHeight else{
return
}
aViewHeight.constant = height
aView.layoutIfNeeded()
}