UIAlertController .
, , :

, , UIKit UIAlertController 270:

, , 998.
, , . :
let alert = UIAlertController(title: "Some gorgeous very big big big title with many words", message: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam a augue eget magna maximus posuere. Donec pellentesque lacus ut tellus mollis, eget congue nulla dapibus. Sed pharetra porta lorem, ac faucibus risus scelerisque vitae. Aenean lacinia lobortis quam quis finibus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed odio nisl, pretium a turpis in, pulvinar bibendum augue. Proin id ligula elementum, pulvinar lorem et, suscipit turpis. Duis in tortor arcu. Donec in dapibus ex.\n\nDuis sit amet lacus nec mauris blandit dignissim. Sed efficitur vestibulum sapien ut condimentum. Donec a lorem sit amet augue imperdiet dictum sed eu sapien. Donec in congue quam, vitae luctus augue. Interdum et malesuada fames ac ante ipsum primis in faucibus. Vivamus felis ipsum, malesuada eu dictum non, imperdiet ut urna. Vivamus tempus ante sit amet quam interdum feugiat. Ut at nulla nibh.", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "Hide this", style: .default, handler: nil))
let widthConstraints = alert.view.constraints.filter({ return $0.firstAttribute == .width })
alert.view.removeConstraints(widthConstraints)
let newWidth = UIScreen.main.bounds.width * 0.90
let widthConstraint = NSLayoutConstraint(item: alert.view,
attribute: .width,
relatedBy: .equal,
toItem: nil,
attribute: .notAnAttribute,
multiplier: 1,
constant: newWidth)
alert.view.addConstraint(widthConstraint)
let firstContainer = alert.view.subviews[0]
let constraint = firstContainer.constraints.filter({ return $0.firstAttribute == .width && $0.secondItem == nil })
firstContainer.removeConstraints(constraint)
alert.view.addConstraint(NSLayoutConstraint(item: firstContainer,
attribute: .width,
relatedBy: .equal,
toItem: alert.view,
attribute: .width,
multiplier: 1.0,
constant: 0))
let innerBackground = firstContainer.subviews[0]
let innerConstraints = innerBackground.constraints.filter({ return $0.firstAttribute == .width && $0.secondItem == nil })
innerBackground.removeConstraints(innerConstraints)
firstContainer.addConstraint(NSLayoutConstraint(item: innerBackground,
attribute: .width,
relatedBy: .equal,
toItem: firstContainer,
attribute: .width,
multiplier: 1.0,
constant: 0))
present(alert, animated: true, completion: nil)
90% :

. , , .