Как я могу заполнить изображение в режиме прокрутки для заполнения экрана? - PullRequest
0 голосов
/ 04 марта 2020

Я играю с видами прокрутки и столкнулся с проблемой, с которой я застрял. У меня есть контроллер представления создать в раскадровке. Контроллер представления содержит представление прокрутки, которое заполняет все суперпредставление.

Затем я добавил изображения программно в режим прокрутки. Изображения отображаются в режиме прокрутки, а подкачка работает нормально. Единственная проблема заключается в том, что представление прокрутки установлено для заполнения суперпредставления, но представление изображений, в котором хранятся изображения, кажется, что оно останавливается над тем местом, где будет находиться панель навигации. Как сделать так, чтобы представление изображений заполняло весь вид в представлении с прокруткой?

  @IBOutlet weak var scrollView: UIScrollView!
  @IBOutlet weak var pagingView: UIPageControl!
  var images = [UIImage]()
  var frame = CGRect(x: 0, y: 0,width: 0,height: 0)



 override func viewDidLoad() {
        super.viewDidLoad()
        scrollView.delegate = self
        scrollView.isPagingEnabled = true 

        images = [UIImage(named: "Slide1")!, UIImage(named: "Slide2")!, UIImage(named: "Slide3")!, UIImage(named: "Slide4")!]

        pagingView.numberOfPages = images.count

// This is where I think I'm having the height problem. 
        for i in 0..<images.count {
            let imageView = UIImageView()
            let x = self.view.frame.size.width * CGFloat(i)

            imageView.frame = CGRect(x: x, y: 0, width: self.view.frame.width, height: self.view.frame.height)
            imageView.contentMode = .scaleAspectFill
            imageView.image = images[i]

            scrollView.contentSize.width = scrollView.frame.size.width * CGFloat(i + 1)

            scrollView.addSubview(imageView)
        }

    }




    func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
        let pageNumber = scrollView.contentOffset.x / scrollView.frame.size.width

        pagingView.currentPage = Int(pageNumber)
    }

После установки скрытой навигационной панели вот такой вывод:

Цвет фона представления прокрутки - красный

enter image description here

1 Ответ

1 голос
/ 04 марта 2020

В этом случае вам необходимо включить родительское представление clipsToBounds. Установите для свойства UIScrollview clipsToBounds значение True.

Программно scrollView.clipsToBounds = true

В UIStoryBoard - щелкните вид-> Инспектор атрибутов

Если вы хотел бы видеть весь экран, убедитесь, что добавили topConstraint из scrollView назначенного superView и скрыли navigationBar в viewWillAppear,

 override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        navigationController?.setNavigationBarHidden(true, animated: animated)
    }
  1. Обязательно удалите строку состояния с помощью

    override var prefersStatusBarHidden: Bool {
       return true
    }
    
  2. Обновите положение Y изображения.

    imageView.frame = CGRect(x: x, y: **self.scrollView.frame.minY**, width: self.view.frame.width, height: self.view.frame.height)
    
  3. Обновите scrollView topConstraint от -20.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...