2016-11-11 4 views
1

UIImageView (viewController에서 가로로 가운데 맞춤)를 UISwitch 내부에 넣으려고합니다. UI 스위치를 ON 위치로 설정하면 두 번째 UIImageView가 원본 UIImageView의 왼쪽에 나타나야합니다. 제약 조건을 사용하면 두 UIImageView가 모두 가운데에 배치됩니다.스위치 온 상태를 통해 UIImageView를 표시하려면 어떻게합니까? 그런 다음 ... UIImageView에 제약 조건을 추가하여 중심에 둘 수 있습니까?

덕분에 사전에

+1

프로그래밍 방식으로 두 번째 UIImageView를 만들려고합니까, 아니면 이미 IB에 설정되어 있습니까? – Aaron

+0

UIImageViews의 콘센트와 UISwitch의 콘센트 및 동작을 추가했습니다. 나는 스위치를 통해 이미지 뷰를 숨기거나 표시 할 수 있지만 컨테이너의 수평 구속 조건을 프로그래밍 방식으로 처리하는 것에 대해서는별로 모른다. –

+0

@Aaron - UIImageViews는 모두 IB에서 미리 생성됩니다. –

답변

1

이 작업을 수행하는 방법에는 여러 가지가 있지만 가장 쉬운 방법은 단순히 단일 이미지 뷰를 포함하는 중심의 수평 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()} 
     } 
    } 
+0

@JoshHorman stackview에 대한 아름다운 생각. 나는 iOS 10과 Xcode 8을 Swift 3로 사용하고 있습니다. 예제 코드를 제공하기에 충분히 친절하십니까? 미리 감사드립니다. –

+0

imageView를 오른쪽으로 움직이게하려면 예제 코드를 사용하여 대답을 편집했습니다. 반대 방향으로 똑같은 작업을하면 새로운보기가 왼쪽으로 움직입니다. –