У меня есть textView
, который я хотел бы сделать полноэкранным при нажатии, а затем вернуться к исходному размеру, если снова нажать.Я могу получить его на весь экран, но не вернуться к исходному размеру.
Вот что у меня есть - вы можете помочь мне понять, почему это не работает?
let viewWidth = view.frame.width
let viewHeight = view.frame.height
let textViewWidth = textView.frame.width
let textViewHeight = textView.frame.height
if sender.state == .ended {
let animator = UIViewPropertyAnimator(duration: 0.5, curve: .easeInOut, animations: {
sender.view!.frame = CGRect(x: 0, y: 0, width: viewWidth, height: viewHeight)
})
animator.startAnimation()
} else if sender.state == .began {
let animator = UIViewPropertyAnimator(duration: 0.5, curve: .easeInOut, animations: {
sender.view!.frame = CGRect(x: 0, y: 0, width: textViewWidth, height: textViewHeight)
})
animator.startAnimation()
}
Обновлено в соответствии с рекомендациями:
var textViewHeight = Int()
var textViewWidth = Int()
//Mark: - Get initial value of textViewWidth and Height
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
let widthOfTextView = textView.frame.width
textViewWidth = Int(widthOfTextView)
let heightOfTextView = textView.frame.height
textViewHeight = Int(heightOfTextView)
}
//Mark: - UITapGestureRecognized for hiding Toolbar, Status&Navigation Bar, slider
@objc func textViewTapped(_ sender: UITapGestureRecognizer) {
toolbar.isHidden = toolbar.isHidden ? false : true
textSlider.isHidden = textSlider.isHidden ? false : true
navigationController!.setNavigationBarHidden(!isHidden, animated: false)
isHidden = navigationController!.isNavigationBarHidden
self.setNeedsStatusBarAppearanceUpdate()
let viewWidth = view.frame.width
let viewHeight = view.frame.height
//let textViewWidth = textView.frame.width
//let textViewHeight = textView.frame.height
if textView.frame.width == view.frame.width {
// text view is full size, animate back to normal size
let animator = UIViewPropertyAnimator(duration: 0.5, curve: .easeInOut, animations: {
sender.view!.frame = CGRect(x: 0, y: 0, width: self.textViewWidth, height: self.textViewHeight)
})
animator.startAnimation()
} else {
// text view is normal size, animate to full size
let animator = UIViewPropertyAnimator(duration: 0.5, curve: .easeInOut, animations: {
sender.view!.frame = CGRect(x: 0, y: 0, width: viewWidth, height: viewHeight)
})
animator.startAnimation()
}
}
Вот скриншот того, что происходит.После того, как я верну textView обратно к его первоначальному размеру, он окажется выше своего исходного положения - https://imgur.com/a/7Uvylih