On Apr 16, 2012, at 16:32 , Luke Hiesterman wrote:
> You can do this by wrapping the operation in your own animation block. This
> simple code demonstrates doing it on 44 point high rows:
>
> [UIView animateWithDuration:0.3 animations:^(void) {
> [tableView beginUpdates];
> CGPoint contentOffset = tableView.contentOffset;
> if (contentOffset.y > 0) {
> contentOffset.y += 44;
> tableView.contentOffset = contentOffset;
> }
> [tableView insertRowsAtIndexPaths:[NSArray
> arrayWithObject:[NSIndexPath indexPathForRow:__numRows inSection:0]]
> withRowAnimation:UITableViewRowAnimationAutomatic];
> __numRows++;
> [tableView endUpdates];
> }];
Yeah, this is essentially what I do, but while I can correctly animate the
frame change alone, if I try to do that AND change contentOffset, it doesn't
work.
Please see the following videos. For reference, the view hierarchy is this:
http://latencyzero.com/stuff/AdjustingOffset.mov
The parent View is a blue color. The Container view is green. The UITableView
is pink.
If I do not adjust the content offset (that is, if it gets set to 0.0), you can
see the views move and resize correctly:
http://latencyzero.com/stuff/AdjustingOffset.mov
If I DO adjust the content offset (even if I hard-code it to 10 pixels),
everything ends up in the right place, but the table view immediately resizes
to the proper height, but the frame.origin.y is adjusted about 81 pixels down
in the view. It snaps to this position, THEN animates to the correct position.
http://latencyzero.com/stuff/NoOffsetAdjustment.mov
The code that does this (for the keyboard appearing) is here:
http://pastebin.com/zRSR78fZ
>>
>> 2) When animating a frame change, are subframe re-sizes also animated? It
>> looks like they're partly immediately update, then animating.
>
> Any subviews which are resized in the scope of the superview's frame change
> will share the animation, which includes anything that has autoresizing
> masks. You may need to invoke -layoutIfNeeded within your animation block on
> views who defer resizing of their subviews until layout time to capture some
> things in an animation. But that discussion is orthogonal to your stated
> goal, which can be achieved by following the sample I've provided above.
I tried throwing in a -layoutIfNeeded, but it had no effect.
--
Rick
_______________________________________________
Cocoa-dev mailing list ([email protected])
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 [email protected]