Не удается полностью прокрутить в 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), чтобы гарантировать, что все мои представления имеют общее поведение.