Как повернуть горизонтальную прокрутку во время выполнения на iOS - PullRequest
0 голосов
/ 22 апреля 2020

Ниже приведен мой код представления прокрутки, он отлично работает, если пользователь запускает в альбомной или портретной ориентации, однако, если пользователь вращается во время выполнения, он не выглядит так хорошо, как ожидалось.

Я играл с метод 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...