Я использую автоматический макет. Ниже приведено исходное состояние представления.
В центре находится кнопка, содержащаяся в представлении. На кнопке есть вкладка ContentMode Aspect Fill, и изображение устанавливается в качестве фонового изображения кнопки.
Затем я использую следующий код для преобразования вида, который увеличит центральную карту, чтобы заполнить экран, и переместите изображение в верхнюю часть представления:
cardTrailingSpaceConstraint.constant = 0
cardLeadingSpaceConstraint.constant = 0
cardView.removeConstraint(cardAspectRatioConstraint)
let cardHeightConstraint = NSLayoutConstraint(item: cardView, attribute: .Height, relatedBy: .Equal, toItem: view, attribute: .Height, multiplier: 1.0, constant: 0)
view.addConstraint(cardHeightConstraint)
dishImageButton.removeConstraint(dishButtonBottomSpaceConstraint)
let dishButtonHeightConstraint = NSLayoutConstraint(item: dishImageButton, attribute: .Height, relatedBy: .Equal, toItem: cardView, attribute: .Height, multiplier: 0.2, constant: 0)
cardView.addConstraint(dishButtonHeightConstraint)
cardView.setNeedsUpdateConstraints()
UIView.animateWithDuration(0.7, delay: 0, usingSpringWithDamping: 0.7, initialSpringVelocity: 0.7, options: nil, animations: { [unowned self] () -> Void in
self.cardHeader.alpha = 0
self.cardView.layer.cornerRadius = 0
self.cardView.layoutIfNeeded()
}) { [unowned self] (finished) -> Void in
}
Результат:
Однако это не то, что я хочу. Кнопка не соблюдает contentMode, а затем изображение растягивается.
Может ли кто-нибудь сказать мне, как поддерживать Aspect Fill contentMode кнопки?