I am creating a scrollview that will have subviews of same heights and different widths. I wanted to know what the best way to wrap the subviews to new lines when the last subview exceeds the scroll views width bounds?
I tried detecting if the subview was outside of the scroll view bounds, then increasing the yOffset, but that doesn't seem to work:
if !CGRectContainsPoint(self.scrollView.frame, CGPointMake(subView.frame.origin.x+subView.frame.size.width, subView.frame.origin.y))
{
scrollViewOffsetY += subView.frame.height
scrollViewOffsetX = 5
subView.frame.origin = CGPointMake(scrollViewOffsetX, scrollViewOffsetY)
}
Figured it out. Here is what I did:
var scrollViewOriginX: CGFloat = 0.0
var scrollViewOriginY: CGFloat = 0.0
for var index = 0; index < 10; index++
{
var subview = UIView()
//...customize your subview here.../
// Check if subview is out of scroll view's bounds
if !CGRectContainsPoint(self.scrollView.bounds, CGPointMake(scrollViewOriginX + scrollViewOffsetX + subview.frame.size.width, 0))
{
// Increase Y Offset
scrollViewOriginY += subview.frame.height + scrollViewOffsetY
// Reset X Offset
scrollViewOriginX = scrollViewOffsetX
subview.frame.origin = CGPointMake(scrollViewOriginX, scrollViewOriginY + scrollViewOffsetY)
}
else
{
subview.frame.origin = CGPointMake(scrollViewOriginX + scrollViewOffsetX, scrollViewOriginY + scrollViewOffsetY)
}
self.scrollView.addSubview(subview)
scrollViewOriginX += subview.frame.width + scrollViewOffsetX
self.scrollView.contentSize = CGSizeMake(self.scrollView.bounds.width, scrollViewOriginY+subview.frame.height+scrollViewInsetBottom)
}