2016-11-11 1 views
1

Я пытаюсь получить UIImageView (по горизонтали в viewController) с UISwitch внутри него. Когда переключатель UI переключился в положение ON - второй UIImageView должен появиться слева от исходного UIImageView, в то время как ограничения должны сделать так, чтобы оба UIImageViews были центрированы по горизонтали.Как отобразить UIImageView через состояние включения? Затем ... как мне добавить ограничения на UIImageView, чтобы либо центрировать это, либо такое?

заранее спасибо

+1

Вы пытаетесь программно создать второй 'UIImageView' или он уже настроен в IB? – Aaron

+0

Я добавил розетку для UIImageViews и выхода и действия для UISwitch. Я могу скрыть/показать изображение правильно с помощью коммутатора, но я не знаю столько о программном решении горизонтальных ограничений в контейнере. –

+0

@Aaron - UIImageViews созданы в IB заранее. –

ответ

1

Есть много способов сделать это, но проще всего просто использовать центрированный горизонтальный UIStackView, который содержит только один ImageView. Когда переключатель перевернут, добавьте второе изображение в стеке, вызвав insertArrangedSubview(:at:), и stackView позаботится о поддержании центрирования и любого запрошенного интервала. Аналогично, когда выключатель выключен, просто звоните removeArrangedSubview(:), и все возвращается на свои места.

Если вы не используете iOS 9 и не имеете UIStackView, вы можете просто перетащить IBOutlet в представление, которое вы хотите ограничить центром X, и добавить к свойству .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 красивая идея о стеке. Я нахожусь на iOS 10 и XCode 8 с Swift 3. Будете ли вы достаточно любезны предоставить код примера, пожалуйста? заранее спасибо. –

+0

Я отредактировал ответ с примером кода, чтобы анимировать изображение вправо. Вы можете сделать то же самое в противоположном направлении, чтобы оживить новый вид, чтобы идти влево. –

Смежные вопросы