• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
animating an NSStackView
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

animating an NSStackView


  • Subject: animating an NSStackView
  • From: Roland King <email@hidden>
  • Date: Tue, 20 Jan 2015 21:28:53 +0800

I'm trying to see if I can make insertions/deletions in an NSStackView a little more animated. So I did the simplest thing I could think of, wrapped the insert/delete in an NSAnimationContext, made the control layer-backed, turned on implicit animations and called layoutSubviewsIfNeeded. Something like this

stackView.wantsLayer = YES;
 ...
[ NSAnimationContext runAnimationGroup:^(NSAnimationContext *context){
	context.duration = somethingVeryLong;
	context.allowsImplicitAnimation = YES;

	[ stackView insertView:aNewView atIndex:aNewIndex ];
	[ stackView layoutSubviewsIfNeeded ];	// doesn't appear to be needed, also tried [ stackView.window layoutIfNeeded ]
}
completionHandler:NULL ];

I figured that the new incoming view would be problematic, but I expected that the existing views would at least animate from their current positions to their final positions smoothly because the layoutSubviewIfNeeded would end up setting their frames inside the animation block and they would animate from their current positions to there. So I expected the views above the insertion point would stay still, and those below would move down and the incoming view would appear in some way I wasn't that concerned about at this point.  However what actually happens is the opposite; ALL the views in the stack jump down instantly leaving a view-sized gap at the very top  and then the ones above the insertion point animate back up to their original positions again.

I think I'm on a road to nowhere trying to make stackview animate in this simplistic a fashion, it was worth a try and I didn't expect it would really work. However I can't understand this particular behaviour, all the changes are being made inside an animation block with a layout at the end, so I don't see how the views 'jump' before they animate back. Any theories?
_______________________________________________

Cocoa-dev mailing list (email@hidden)

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:

This email sent to email@hidden


  • Follow-Ups:
    • Re: animating an NSStackView
      • From: Ken Thomases <email@hidden>
  • Prev by Date: Re: recycleURLs doesn't enable Put Back or Undo in Finder
  • Next by Date: Re: recycleURLs doesn't enable Put Back or Undo in Finder
  • Previous by thread: Re: UIPicker
  • Next by thread: Re: animating an NSStackView
  • Index(es):
    • Date
    • Thread