我想制作UIScrollView
或覆盖这样的流,我尝试了一些像 icaraousal 等的覆盖流,但那些不会产生这样的感觉,所以如果有人知道这种类型的覆盖,请建议我。
和 iCarousal 创建这种类型的视图 查看侧面图像的位置和角度的差异
我想制作UIScrollView
或覆盖这样的流,我尝试了一些像 icaraousal 等的覆盖流,但那些不会产生这样的感觉,所以如果有人知道这种类型的覆盖,请建议我。
和 iCarousal 创建这种类型的视图 查看侧面图像的位置和角度的差异
您可能正在寻找这个非常棒的库,它可以完全满足您的要求
但是你必须在里面做一些编辑才能达到你想要的方式
它有大量的委托,可以用来实现你正在寻找的东西
@protocol iCarouselDataSource <NSObject>
- (NSUInteger)numberOfItemsInCarousel:(iCarousel *)carousel;
- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view;
@optional
- (NSUInteger)numberOfPlaceholdersInCarousel:(iCarousel *)carousel;
- (UIView *)carousel:(iCarousel *)carousel placeholderViewAtIndex:(NSUInteger)index reusingView:(UIView *)view;
- (NSUInteger)numberOfVisibleItemsInCarousel:(iCarousel *)carousel;
//deprecated, use carousel:viewForItemAtIndex:reusingView: and carousel:placeholderViewAtIndex:reusingView: instead
- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index __deprecated;
- (UIView *)carousel:(iCarousel *)carousel placeholderViewAtIndex:(NSUInteger)index __deprecated;
@end
@protocol iCarouselDelegate <NSObject>
@optional
- (void)carouselWillBeginScrollingAnimation:(iCarousel *)carousel;
- (void)carouselDidEndScrollingAnimation:(iCarousel *)carousel;
- (void)carouselDidScroll:(iCarousel *)carousel;
- (void)carouselCurrentItemIndexUpdated:(iCarousel *)carousel;
- (void)carouselWillBeginDragging:(iCarousel *)carousel;
- (void)carouselDidEndDragging:(iCarousel *)carousel willDecelerate:(BOOL)decelerate;
- (void)carouselWillBeginDecelerating:(iCarousel *)carousel;
- (void)carouselDidEndDecelerating:(iCarousel *)carousel;
- (CGFloat)carouselItemWidth:(iCarousel *)carousel;
- (CGFloat)carouselOffsetMultiplier:(iCarousel *)carousel;
- (BOOL)carouselShouldWrap:(iCarousel *)carousel;
- (CGFloat)carousel:(iCarousel *)carousel itemAlphaForOffset:(CGFloat)offset;
- (CATransform3D)carousel:(iCarousel *)carousel itemTransformForOffset:(CGFloat)offset baseTransform:(CATransform3D)transform;
- (CGFloat)carousel:(iCarousel *)carousel valueForTransformOption:(iCarouselTranformOption)option withDefault:(CGFloat)value;
//deprecated, use transformForItemAtIndex:withOffset:baseTransform: instead
- (CATransform3D)carousel:(iCarousel *)carousel transformForItemView:(UIView *)view withOffset:(CGFloat)offset __deprecated;
- (BOOL)carousel:(iCarousel *)carousel shouldSelectItemAtIndex:(NSInteger)index;
- (void)carousel:(iCarousel *)carousel didSelectItemAtIndex:(NSInteger)index;
首先这里最好的 源代码
contentOffset
可能是无论在那里设置这些数字,你都不会因为你把它放在它的手上而留下深刻的印象。所以它只是继续设置它认为应该是下一瞬间的 contentOffset - 而不验证 contentOffset 在此期间是否发生了变化。
我将子类UIScrollView
化并将魔法放入setContentOffset
方法中。根据我的经验,所有内容偏移更改都通过该方法,即使是内部滚动引起的内容偏移更改。只需在某个时候执行 [super setContentOffset
:..] 即可将消息传递给真正的UIScrollView
.
也许如果你把你的换档动作放在那里,它会更好地工作。您至少可以检测 3000-off 设置contentOffset
,并在传递消息之前对其进行修复。如果您还要覆盖 contentOffset 方法,您可以尝试查看是否可以制作虚拟无限内容大小,并将其减少到“引擎盖下”的真实比例。