Ниже приведен мой код представления прокрутки, он отлично работает, если пользователь запускает в альбомной или портретной ориентации, однако, если пользователь вращается во время выполнения, он не выглядит так хорошо, как ожидалось.
Я играл с метод viewWillTransition, и я даже не могу изменить простое свойство кнопки из этой функции, поэтому я определенно что-то упускаю.
Вопрос 1. Почему у меня не работает изменение цвета в viewWillTransition (я знаю, что функция называется правильно)
Вопрос 2: Как лучше всего справиться с моей проблемой поворота ориентации?
// Get dynamic size of scrollview
override func viewDidLayoutSubviews() {
scrollWidth = scrollView.frame.size.width
scrollHeight = scrollView.frame.size.height
}
override func viewDidLoad() {
super.viewDidLoad()
view.layoutIfNeeded()
self.scrollView.delegate = self
slidesUI()
}
var slide: UIView!
var imageView: UIImageView!
var titleLabel: UILabel!
var descsLabel: UILabel!
var button: UIButton!
func slidesUI() {
var frame = CGRect(x: 0, y: 0, width: 0, height: 0)
for index in 0..<titles.count {
frame.origin.x = scrollWidth * CGFloat(index)
frame.size = CGSize(width: scrollWidth, height: scrollHeight)
slide = UIView(frame: frame)
imageView = UIImageView.init(image: UIImage.init(named: images[index]))
imageView.frame = CGRect(x: 0, y: 0, width: scrollWidth * 0.5, height: scrollHeight * 0.5)
imageView.contentMode = .scaleAspectFit
imageView.center = CGPoint(x: scrollWidth/2, y: scrollHeight/2.3 )
titleLabel = UILabel.init(frame: CGRect(x: 32, y: imageView.frame.minY - scrollHeight * 0.1, width: scrollWidth - 64, height: 30))
titleLabel.textAlignment = .center
titleLabel.font = UIFont.boldSystemFont(ofSize: scrollHeight/30)
titleLabel.text = titles[index]
descsLabel = UILabel.init(frame: CGRect(x: 32, y: imageView.frame.maxY + 10, width: scrollWidth - 64, height: 100))
descsLabel.textAlignment = .center
descsLabel.numberOfLines = 0
descsLabel.font = UIFont.systemFont(ofSize: scrollHeight/37)
descsLabel.text = descs[index]
button = UIButton.init(frame: CGRect(x: 32, y: descsLabel.frame.maxY + 10, width: scrollWidth - 64, height: scrollHeight/20))
button.setTitle(buttonName[index], for: .normal)
button.backgroundColor = UIColor.systemBlue
button.titleLabel?.font = UIFont.systemFont(ofSize: scrollHeight/37)
button.layer.cornerRadius = 10.0
button.addTarget(self, action: #selector(buttonPressed), for: .touchUpInside)
slide.addSubview(imageView)
slide.addSubview(titleLabel)
slide.addSubview(descsLabel)
slide.addSubview(button)
scrollView.addSubview(slide)
}
// Disable vertical scroll/bounce
scrollView.contentSize = CGSize(width: scrollWidth * CGFloat(titles.count), height: scrollHeight)
scrollView.contentSize.height = 1.0
// Initial state
pageControl.numberOfPages = titles.count
pageControl.currentPage = 0
}
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
titleLabel.textColor = UIColor.systemRed // Does not work
}