ios - UITableView snap to cell -
i trying implement "snap cell" effect in uitableview. uitableview has 3 equally sized cells, reason uitableview snaps cell 0 or cell 1 , doesn't ever snap third cell. wrong 50 points low, no matter how hard slide. use obvious code create effect can't understand why doesn't work.
- (void)scrollviewwillenddragging:(uiscrollview *)scrollview withvelocity:(cgpoint)velocity targetcontentoffset:(inout cgpoint *)targetcontentoffset { nsindexpath *pathfortargettopcell = [self.tableview indexpathforrowatpoint:cgpointmake(cgrectgetmidx(self.tableview.bounds), targetcontentoffset->y)]; dlog(@"indexpathforrow %d", pathfortargettopcell.row); targetcontentoffset->y = [self.tableview rectforrowatindexpath:pathfortargettopcell].origin.y; } any thoughts going wrong?
edit: suspect has status bar , nav bar on top, since off 64 points. still doesn't explain why doesn't recognise last cell though..
for status bar offset, in vc's viewdidload:
if([self respondstoselector:@selector(setautomaticallyadjustsscrollviewinsets:)]) [self setautomaticallyadjustsscrollviewinsets:no]; edit
just testing, add 4 equally size cells , try snapping 3rd , 4th cells?
modify scrollviewwillenddragging implementation follows:
- (void)scrollviewwillenddragging:(uiscrollview *)scrollview withvelocity:(cgpoint)velocity targetcontentoffset:(inout cgpoint *)targetcontentoffset { nsindexpath *pathforcentercell = [self.tableview indexpathforrowatpoint:cgpointmake(cgrectgetmidx(self.tableview.bounds), cgrectgetmidy(self.tableview.bounds))]; [self.tableview scrolltorowatindexpath:pathforcentercell atscrollposition:uitableviewscrollpositionmiddle animated:yes]; }
Comments
Post a Comment