On Thu, Jul 18, 2013, at 01:18 PM, Cody Garvin wrote:
> The UIScrollView adds these subviews to what's called a contentView. This
> is why you have to change a content size to adjust your scrolling, vs
> changing the frame of the UIScrollView. You're grabbing the wrong layer.

When learning about Auto Layout on iOS, I spent a lot of time exploring
the internals of UIScrollView. My investigations led me to conclude that
there is no such thing as a content view as you describe it. You can see
this for yourself if you call -recursiveDescription on your scroll view
(or any of its ancestors).

It looks to me like the initial design of UIScrollView—that is, before
the iOS 2.0 SDK ever shipped—was similar to that of NSScrollView on the
Mac. This is why the documentation makes references to "content views."

At some point before iOS 2.0, this design was changed, and the area
scrolled by the scroll view no longer maps to an actual UIView object.
This is why UITableView and friends are _subclasses_ of UIScrollView,
rather than _subviews_.

The _contentView ivar, and the private -contentView method, now seem to
exist for the purpose of supporting
-touchesShouldBegin:withEvent:inContentView: and friends. There is no
secret "content view" in the view hierarchy.

Again, this understanding is derived from poking at UIScrollView's
internals. It is not definitive, and quite likely not (entirely)
correct. But it jibes with my understand of UIScrollView much better
than the "anonymous contentView" theory.

> You can grab the correct view / layer: [[scrollView contentView] layer];

There is no public -contentView method on UIScrollView, so attempting to
call it is likely to get your app rejected by the App Store. Please do
not use this method.

--Kyle Sluder

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to