我在UIScrollView中有一个UIImageView,我希望能够滚动“常规”照片尺寸的尺寸。我的问题是我可以滚动,但是当它到达照片的顶部或底部时,滚动位置不会停留,而是“反弹”并向后移动一点,并且不允许照片留在那个位置,我该如何解决这个问题呢?
这是下面的代码:
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)
例如,如果您使用相机拍摄全屏照片,然后当照片显示在视图中时,整张照片在滚动时无法保持其位置。
答案 0 :(得分:1)
你做了很多错事,如上所述,你应该转向自动布局和约束,但是......
让图片按照您的方式滚动:
// 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
}
答案 1 :(得分:0)
Bouncing是UIScrollView(及其子类,包括UiTableView)中的可选行为。您可以通过bounces property或Interface Builder打开/关闭它。
我通常使用便捷方法将所需的ScrollView属性捆绑在一起(或者您可以使用UIAppearance)以确保我的所有视图都具有共享行为。