2016-07-16 4 views
0

Я установил ограничения вида, который я перетащил на раскадровку, чтобы представление охватило весь экран. (Я приколол его 0 сверху, слева, снизу и справа). Когда появится представление, я хочу, чтобы представление уменьшалось. Константа должна анимироваться от 0 до 20.Ограничения анимации UIView (как подвид основного вида)

В приложении она изменяет константу, но она не анимирует ее. Кроме того, за этим уменьшенным представлением все черное, хотя оно должно быть белым (потому что за этим видом основным видом является белый).

override func viewDidAppear(animated: Bool) { 

    UIView.animateWithDuration(2.5, animations: { 
     self.leftPin.constant = 20.0 
     self.topPin.constant = 20.0 
     self.rightPin.constant = 20.0 
     self.bottomPin.constant = 20.0 
     // bg is my view I want to shrink 
     self.bg.layoutIfNeeded() 
     }) 
} 

Я читал, что для того, чтобы «применять» новые ограничения для фактического расположения, Вы должны запустить layoutIfNeeded(). Но эти ограничения выше также работают без этой функции. Зачем?

ответ

2

@try это

override func viewDidAppear(animated: Bool) { 

    self.leftPin.constant = 20.0 
    self.topPin.constant = 20.0 
    self.rightPin.constant = 20.0 
    self.bottomPin.constant = 20.0 

    UIView.animateWithDuration(2.5, animations: { 

    self.view.layoutIfNeeded() 
    }) 
}