Для вида индикатора выполнения вещи в Swift 4
я выполняю эти шаги:
@IBOutlet var progressBar: UIView!
var progressBarWidth: Int = your value
progressBar.frame.size.width = CGFloat(progressBarWidth)
progressBarWidth += your value
для автоматического увеличения ширина каждый раз, когда пользователь касается кнопки. Присвоение questionFrame.frame.size.height= screenSize.height * 0.30
ничего не отразит в представлении. потому что это - свойство только добирания. Если Вы хотите изменить кадр questionFrame, можно использовать ниже кода.
questionFrame.frame = CGRect(x: 0, y: 0, width: 0, height: screenSize.height * 0.70)
Я знаю, что уже существует решение этого вопроса, но я нашел альтернативу этой проблеме, и возможно это могло помочь кому-то.
я испытывал затруднения установить кадр моего представления sub, потому что определенные значения относились к его положению в рамках основного представления. Таким образом, если Вы не хотите обновлять свой кадр путем изменения целого кадра через CGRect, можно просто изменить значение кадра и затем обновить его.
// keep reference to you frames
var questionView = questionFrame.frame
var answerView = answerFrame.frame
// update the values of the copy
questionView.size.height = CGFloat(screenSize.height * 0.70)
answerView.size.height = CGFloat(screenSize.height * 0.30)
// set the frames to the new frames
questionFrame.frame = questionView
answerFrame.frame = answerView