Я пытаюсь установить происхождение и ширину / высоту одного UIView (красный) для второго UIView (синий).
Я звоню UIView.frame.origin или size, и по какой-то причине источник y не работает.
Я также пытался использовать ограничения макета (см. Закомментированное ниже), но это переопределяет мой синий полностью ограниченный вид.
Затем у меня есть кнопка, которая анимирует красный вид насбоку, чтобы вы могли видеть синий вид внизу, но я не могу заставить их выстроиться в линию, чтобы начать с.Ниже мой код.В конструкторе интерфейсов оба UIViews настроены как контейнеры.Синий полностью ограничен автоматической компоновкой, а красный не имеет ограничений.
import UIKit
class ViewController: UIViewController
{
@IBOutlet weak var blueContainer: UIView!
@IBOutlet weak var redContainer: UIView!
@IBOutlet weak var button: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
print(redContainer.frame)
redContainer.frame.origin.x = view.frame.width/2
redContainer.frame.size.width = view.frame.width
//try to line up y with origin and size
redContainer.frame.origin.y = blueContainer.frame.origin.y
redContainer.frame.size.height = blueContainer.frame.size.height
//also tried by using constraints
//redContainer.topAnchor.constraint(equalTo: blueContainer.topAnchor).isActive = true
//redContainer.heightAnchor.constraint(equalTo: blueContainer.heightAnchor).isActive = true
print(redContainer.frame)
}
@IBAction func slideRed(_ sender: Any) {
if redContainer.frame.origin.x == 0 {
UIView.animate(withDuration: 0.5) {
self.redContainer.frame.origin.x = self.view.frame.width/2
}
button.setTitle("Come Back Red!", for: .normal)
} else {
UIView.animate(withDuration: 0.5) {
self.redContainer.frame.origin.x = 0
}
button.setTitle("Go Away Red!", for: .normal)
}
}
}