不同项目的不同宽度 - 在 iCarousel 中
Posted
技术标签:
【中文标题】不同项目的不同宽度 - 在 iCarousel 中【英文标题】:different width for different item - in iCarousel 【发布时间】:2015-07-03 11:17:07 【问题描述】:我正在使用 iCarousel - https://github.com/nicklockwood/iCarousel。
虽然我需要更改不同项目的宽度,但意味着为不同的项目设置不同的宽度。
不确定如何进行更改,如果您对此有任何经验,请提供帮助。
另一个问题是如何让它在滚动时只滚动 1 个项目。 -- 表示只滚动到下一个项目,当前它会继续滚动到下一个项目...
非常感谢任何帮助。
【问题讨论】:
对于宽度,您可以使用委托方法“carouselItemWidth”并使用scrollspeed一次滚动1个项目 "scrollspeed" 未用于此目的,亲爱的@saurabh-prajapati。 我使用了carouselItemWidth,它只能设置1个itemWidth,我想为不同的item使用不同的itemWidth。 【参考方案1】:对于滚动时仅滚动 1 个项目,您必须添加gestureRecognizer 并禁用 Carousel 的滚动
_myCarousel = [[iCarousel alloc] initWithFrame:CGRectMake(0,0, 310, 100)];
_myCarousel.type = iCarouselTypeCoverFlow2;
_myCarousel.scrollEnabled = NO;
UISwipeGestureRecognizer * swipeleft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeleft:)];
swipeleft.direction = UISwipeGestureRecognizerDirectionLeft;
[_myCarousel addGestureRecognizer:swipeleft];
UISwipeGestureRecognizer * swiperight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swiperight:)];
swiperight.direction=UISwipeGestureRecognizerDirectionRight;
[_myCarousel addGestureRecognizer:swiperight];
_myCarousel.dataSource = self;
_myCarousel.delegate = self;
[myView addSubview:_myCarousel];
swipeleft: & swiperight: 将是
-(void)swipeleft:(UISwipeGestureRecognizer*)gestureRecognizer
[_myCarousel scrollByNumberOfItems:1 duration:0.25];
-(void)swiperight:(UISwipeGestureRecognizer*)gestureRecognizer
[_myCarousel scrollByNumberOfItems:-1 duration:0.25];
按预期为我工作。 希望这会对你有所帮助..
【讨论】:
您对不同项目的不同 itemWidth 有什么想法吗? 不知道为每个轮播项目设置不同大小的方法,但是如果您想在每个轮播项目上显示具有动态大小的图像(即图像将适合屏幕),那么我认为您可以添加 UIImageView 和内容模式。这是链接***.com/questions/12436178/…您也可以通过根据需要设置它们的框架,在单个轮播项目中添加多个视图,【参考方案2】:问题 1:
在 iCarousel itemWidth 属性是只读的,你应该使用 carousel:viewForItemAtIndex:reusingView 来达到这个目的:
@property (nonatomic, readonly) CGFloat itemWidth;
轮播中项目的显示宽度(只读)。这是 从传入轮播的第一个视图自动派生 使用 carousel:viewForItemAtIndex:reusingView: dataSource 方法。 您还可以使用 carouselItemWidth 覆盖此值:委托 方法,这将改变分配给轮播项目的空间(但 不会调整或缩放项目视图)。
问题 2:
使用此属性进行分页滚动:
@property (nonatomic, assign, getter = isPagingEnabled) BOOL pagingEnabled;
启用和禁用分页。启用分页后,轮播将 当用户滚动时,在每个项目视图处停止,就像 UIScrollView 的 pagingEnabled 属性。
【讨论】:
我设置了carousel:viewForItemAtIndex:reusingView,但它不能为每个视图设置itemWidth。即使我设置了不同宽度的视图,但它仍然显示相同的宽度(之间有不同的空格)。 我也设置了pagingEnabled,虽然看起来不起作用,是否需要设置其他属性? 为什么不试试这个例子进行分页:github.com/nicklockwood/iCarousel/tree/master/Examples/… 那不行,我想要类似 iPhone 中的相机应用,每次只能滚动 1 个项目。【参考方案3】:我尝试更改 iCarousel,但如果更改 itemWidth,它看起来无法顺利移动。
-- 所以我尝试编写自己的轮播,现在可以了。谢谢大家。
【讨论】:
以上是关于不同项目的不同宽度 - 在 iCarousel 中的主要内容,如果未能解决你的问题,请参考以下文章
是否可以使用 SKScene 数组实现 iCarousel?