Не удается полностью прокрутить в UIScrollView

У меня есть UIImageView в UIScrollView, и я хочу иметь возможность прокручивать размеры "обычных" размеров фотографий. Моя проблема в том, что я могу прокручивать, однако, когда он достигает верхней или нижней части фотографии, позиция прокрутки не остается, вместо этого она "отскакивает" и немного перемещается назад, и не позволяет фотография, чтобы остаться в этом положении, как бы я исправить это?

вот код ниже:

 scrollView.frame = CGRect(x: self.view.frame.width * 0, y: self.view.frame.height / 3, width: self.view.frame.width, height: self.view.frame.width)
        self.view.addSubview(scrollView)
        scrollView.delegate = self


        let image = imageView.image
        imageView.frame = CGRect(x: self.view.frame.width * 0, y: self.view.frame.height * 0, width: (image?.size.width)!, height: (image?.size.height)!)
        imageView.frame = scrollView.bounds
        imageView.contentMode = .scaleAspectFill
        scrollView.addSubview(imageView)

Например, если вы сделали полноэкранный снимок, сделанный с помощью камеры, а затем, когда снимок отображается на виде, вся фотография не может оставаться на своем месте во время прокрутки.

2 ответа

Решение

Вы делаете некоторые вещи неправильно, и, как уже упоминалось, вы должны перейти к автоматической компоновке и ограничениям, однако...

Чтобы ваше изображение прокручивалось так, как вы собираетесь:

    // set scroll view frame to be full width of view, start 1/3 of the way down from the top, and make the height the same as the width
    scrollView.frame = CGRect(x: 0, y: self.view.frame.height / 3, width: self.view.frame.width, height: self.view.frame.width)

    // add the scroll view to the view
    self.view.addSubview(scrollView)

    // use "if let" so you're not force-unwrapping optionals
    if let image = imageView.image {

        // set the imageView's frame to the size of the image
        imageView.frame = CGRect(x: 0, y: 0, width: image.size.width, height: image.size.height)

        // add the imageView to the scroll view
        scrollView.addSubview(imageView)

        // set the contentSize of the scroll view - the "scrollable area" - to the size of the image view
        scrollView.contentSize = imageView.bounds.size
    }

Отскок - необязательное поведение в UIScrollView (и его подклассах, включая UiTableView). Вы можете включить / выключить его через свойство bounces или через Interface Builder.

Обычно я связываю нужные свойства ScrollView вместе в удобном методе (или вы можете использовать UIAppearance), чтобы гарантировать, что все мои представления имеют общее поведение.

Другие вопросы по тегам