iOS/코드조각
[iOS, Swift] NSLayoutConstraint Multiplier 수정하기
검은참깨두유vm
2022. 10. 18. 18:12
반응형
iOS 15.5, Xcode 13.31, Swift 5, UIKit 환경에서 진행했습니다.
NSLayoutConstraint의 multiplier 값을 변경하려고 보니
Only-get으로만 값을 받을 수 있고, 값을 설정할 수가 없었다.
그래서 구글링을 해본 결과 스택오버플로우에서 Constraint 값을 제거하고,
새로운 Constraint를 설정해줄 때 multiplier 값을 변경하여 등록해주는 코드를 발견했다.
밑의 코드를 참고하면 된다.
import UIKit
extension NSLayoutConstraint {
func setMultiplier(multiplier: CGFloat) -> NSLayoutConstraint {
NSLayoutConstraint.deactivate([self])
let newConstraint = NSLayoutConstraint(item: firstItem, attribute: firstAttribute, relatedBy: relation, toItem: secondItem, attribute: secondAttribute, multiplier: multiplier, constant: constant)
newConstraint.priority = priority
newConstraint.shouldBeArchived = self.shouldBeArchived
newConstraint.identifier = self.identifier
NSLayoutConstraint.activate([newConstraint])
return newConstraint
}
}
- NSLayoutConstraint Multiplier 값 변경하는 함수
@IBOutlet var newConstraints: NSLayoutConstraint!
override func viewDidLoad() {
newConstraints = newConstraints.setMultiplier(multiplier: 0.16)
}
- setMultiplier 사용방법
반응형