Now we're cooking with GAS!!!!!!! override func applyLayoutAttributes(layoutAttributes: UICollectionViewLayoutAttributes) { print("apply layout attributes!: \(titleLabel.text)") }
Thanks Man! -Luther On Mon, Mar 7, 2016 at 11:54 PM, Luke Hiesterman <luket...@apple.com> wrote: > By teaching a cell to respond to an attribute I merely meant that it > should override setLayoutAttributes: and do something in there with the > relevant property. Hope that helps. > > Luke > > On Mar 7, 2016, at 9:39 PM, Luther Baker <lutherba...@gmail.com> wrote: > > > teach your cell classes to respond to that property > > Want to think about this out loud. Wondering what would 'trigger' a lookup > on the layout's layoutAttributesForItemAtIndexPath ... and where would I > store the indexPath I am dragging around. > > If I were to be more literal - in my view controller, I handle the > UIGestureRecognizerState.Began event. At this point, I can get the > indexPath of the element I am about to move and if I change something on > that cell at that time, it sticks for the life of the drag without > reference to layoutAttributes. I also handle the > UIGestureRecognizerState.Changed event and again, if I retrieve the cell at > the gesture's locationInView and change things in it ... those changes > stick until I let go of the drag. > > Stepping into the custom layout for a minute ... as you suggested, I am > now implementing layoutAttributesForInteractivelyMovingItemAtIndexPath ... > and that is getting invoked in response to the > updateInteractiveMovementTargetPosition call I am making as the gesture > location changes. Now, I know the collection view's methods are triggering > the layout's callbacks - but I'm not sure what would trigger me to fetch > the custom attributes you are suggesting. At a minimum, to ask the layout > for the attributes at that indexPath, I'd have to actually be tracking the > 'selectedIndexPath' in which case, I could just get the cell and modify it > directly. > > I guess I'm wondering how to "teach my cells classes to respond to that > property" ... Cells are reused so I'm not even sure how I'd go about > setting up and tearing down a KVO type relationship for the specific cell I > am dragging around. Maybe there is a WWDC video that digs into this? or > it's an easy explain? > > Sorry for being so long-winded. I'm not sure I'm communicating my question > well. Hope you can understand my underlying question and nudge me the right > way but at any rate, thanks for your help so far. I'd love to use an > elegant, "made for CollectionView" solution ... but I don't think I'm > looking at it correctly yet. Just in general I guess, how can a change to > the layoutAttributes cause my CollectionViewDelegate and DataSources to > fetch the cell I'm dragging around and change it (or does it not require > the delegates or datasources ... ?) > > Thanks, > -Luther > > > > On Mon, Mar 7, 2016 at 2:45 PM, Luke Hiesterman <luket...@apple.com> > wrote: > >> You can create your own subclass of UICollectionViewLayoutAttributes and >> add something like an “isMoving” property to that. Then teach your cell >> classes to respond to that property by changing the background color. >> >> Luke >> >> On Mar 7, 2016, at 11:44 AM, Luther Baker <lutherba...@gmail.com> wrote: >> >> Thanks Luke! That was it - I can drag and drop successfully now. >> >> One more question, how do I modify a property of the item I'm dragging >> around if the property is NOT currently in UICollectionViewLayoutAttributes >> ... I don't see a call to the datasource or delegate when I select the cell >> for moving ... so I'm not sure how to change the background color to "red" >> for instance. >> >> Would I have to add my own view to the superview and manually move it >> around in the dragging callbacks? >> >> Thanks! >> -Luther >> >> >> On Mon, Mar 7, 2016 at 11:59 AM, Luke Hiesterman <luket...@apple.com> >> wrote: >> >>> I’d check your return value for this method in your layout: >>> >>> - (UICollectionViewLayoutAttributes >>> *)layoutAttributesForInteractivelyMovingItemAtIndexPath:(NSIndexPath >>> *)indexPath withTargetPosition:(CGPoint)position NS_AVAILABLE_IOS(9_0); >>> >>> Luke >>> >>> On Mar 7, 2016, at 9:55 AM, Luther Baker <lutherba...@gmail.com> wrote: >>> >>> I followed the directions here, >>> >>> http://nshint.io/blog/2015/07/16/uicollectionviews-now-have-easy-reordering/ >>> - to add iOS9 style dragging to my UICollectionView - and it sort of >>> works. >>> >>> As described in the article, I added a long press gesture recognizer and >>> wired it in to make calls on the collection view -- but now, if I long >>> press, the element under my finger disappears. As I drag the transparent >>> image around, the other elements shift - but I can never see the element >>> I >>> am dragging around. When I let go, there is simply a hole left where I >>> "dropped" the element. >>> >>> I do, very much, have a custom layout and I'm not sure that if, for >>> drag, I >>> need to do anything special. Do I need to calculate the frame of the >>> item I >>> am dragging around? I'm not sure what to try next except to roll my own >>> dragging. Any thoughts or things to try? >>> >>> Thanks in advance. >>> _______________________________________________ >>> >>> 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/luketheh%40apple.com >>> >>> This email sent to luket...@apple.com >>> >>> >>> >> >> > _______________________________________________ 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