Scroll View
I have a UIScrollView, with constraints left: 0, top: 0, right: 0, bottom: 0
Inside Scroll View
At the top of this UIScrollView
is a UIImageView
with constraints left: 0, top: 0, right: 0, height: 200
Underneath this I have a UITextView
with constraints left: 0, top: 0, right: 0, bottom: 0
This means the UITextView
will resize with respect to its content, and I set the scrollingEnabled
to false
for the UITextView
.
So, when I run, it almost works perfectly.
The one problem is the UIImageView
takes up about 10% more than the actual screen width. Hence, horizontal scrolling is enabled.
I have tried adding the lines
imageView.frame = CGRect(0, 0, screenSize.width, 200) scrlView.contentSize.width = screenSize.width
but this makes no difference. I can still scroll horizontally and the Image View still takes up around 10% more than the actual screen width.
Note, I have not set imageView screen width in storyboard, only programatically.
Any ideas?
To hide the horizontal scrollbar and prevent horizontal scrolling, use overflow-x: hidden: HTML.
You can also set the overflow-x CSS property to hidden, which prevents child content from wrapping within its container but turns off sideways scrolling. Another solution is to set the width of child elements to 100%.
Like this,
Swift 4.0
func scrollViewDidScroll(scrollView: UIScrollView) { if scrollView.contentOffset.x>0 { scrollView.contentOffset.x = 0 } }
And, you can set this property:
scrollImg.isDirectionalLockEnabled = true
Swift 4
Horizontal Scroll Lock
func scrollViewDidScroll(_ scrollView: UIScrollView) { if scrollView.contentOffset.x != 0 { scrollView.contentOffset.x = 0 } }
You can change the x to y for vertical scrolling.
Make sure to add UIScrollViewDelegate like this:
class MyViewController: UIViewController, UIScrollViewDelegate { @IBOutlet var scrollView: UIScrollView! ... }
And set the delegate for the ScrollView
scrollView.delegate = self
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With