이 작업을 수행하는 방법에는 여러 가지가 있지만 가장 쉬운 방법은 단순히 단일 이미지 뷰를 포함하는 중심의 수평 UIStackView을 사용하는 것입니다. 스위치가 뒤집 으면 insertArrangedSubview(:at:)을 호출하여 두 번째 imageView를 stackView에 추가하면 stackView가 가운데 맞춤과 요청 된 간격을 유지 관리합니다. 마찬가지로 스위치가 꺼져있을 때 removeArrangedSubview(:)으로 전화하면 모든 것이 다시 작동합니다.
iOS 9가 아니며 UIStackView가없는 경우 IBOutlet을 centerX 제약 조건으로 드래그하여 center.constant 속성에 추가하고 layoutIfNeeded를 추가하면 오른쪽으로 슬라이드되도록 할 수 있습니다 .
class ViewController: UIViewController{
@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var imageViewCenterXConstraint: NSLayoutConstraint!
let padding = CGFloat(10)
@IBAction func tapButton(_ sender: Any) {
imageViewCenterXConstraint.constant = imageView.frame.size.width/2 + padding
UIView.animate(withDuration: 0.25) { self.view.layoutIfNeeded()}
}
}
프로그래밍 방식으로 두 번째 UIImageView를 만들려고합니까, 아니면 이미 IB에 설정되어 있습니까? – Aaron
UIImageViews의 콘센트와 UISwitch의 콘센트 및 동작을 추가했습니다. 나는 스위치를 통해 이미지 뷰를 숨기거나 표시 할 수 있지만 컨테이너의 수평 구속 조건을 프로그래밍 방식으로 처리하는 것에 대해서는별로 모른다. –
@Aaron - UIImageViews는 모두 IB에서 미리 생성됩니다. –