Я использую UITextView для отображения текста в UIView, и мне нужно, чтобы текстовый блок был выровнен по вертикали внутри этого представления.
Для этого я использовал метод наблюдателя, который нашел в Интернете, и в большинстве случаев он работал довольно хорошо:
в представленииDidLoad:
moodPhrase.addObserver(self, forKeyPath: "contentSize", options: NSKeyValueObservingOptions.New, context: nil)
затем наблюдатель:
//Update phrase content position (vertical alignment)
override func observeValueForKeyPath(keyPath: String, ofObject object: AnyObject, change: [NSObject : AnyObject], context: UnsafeMutablePointer<Void>) {
var topCorrect : CGFloat = (moodPhrase.frame.height - moodPhrase.contentSize.height);
topCorrect = topCorrect < 0.0 ? 0.0 : topCorrect / 2
moodPhrase.contentOffset = CGPoint(x: 0, y: -topCorrect)
}
моя проблема в том, что у меня есть контроллер меню, который всплывает над этим контроллером, и я использую unwind segue, чтобы вернуться из меню к контроллеру UITextView. При этом текстовый блок возвращается в верхнюю часть экрана.
@IBAction func prepareForUnwind(segue: UIStoryboardSegue) {
if(segue.identifier == "CloseMenuSegue"){
self.dismissViewControllerAnimated(true, completion: nil)
}
}
Я попытался добавить наблюдателя внутри раскрутки, но это не дало никакого эффекта. Я что-то пропустил здесь?
Благодарность,