【发布时间】:2012-02-21 12:34:50
【问题描述】:
我已在iCarousel 中设置图像。当我滚动轮播时,它会在前后显示图像。我不想在后面显示图像。请帮忙。谢谢。
【问题讨论】:
-
您是否使用过 iCarousael 的示例代码,然后它还提供了不同的开关类型,您可以更改不会在背景中显示图像的类型
-
请详细解释一下..
标签: iphone ios carousel icarousel
我已在iCarousel 中设置图像。当我滚动轮播时,它会在前后显示图像。我不想在后面显示图像。请帮忙。谢谢。
【问题讨论】:
标签: iphone ios carousel icarousel
你应该实现委托:
- (CGFloat)carousel:(iCarousel *)_carousel valueForOption:(iCarouselOption)option withDefault:(CGFloat)value{
switch (option)
{
case iCarouselOptionVisibleItems:
{
return numberOfItemsIntheFront;
}
}
}
【讨论】:
您需要更改为自定义轮播类型,并在您的委托中复制 iCarouselTypeRotary 的实现。然后实现-carousel:itemAlphaForOffset:,使后面的项目的 alpha 为零。
【讨论】:
在最新版本的 iCarousel 中,最简单的方法是在轮播项目视图上设置 view.layer.doubleSided = NO,或者使用 iCarouselOptionShowBackfaces 属性,如下所示:
- (CGFloat)carousel:(iCarousel *)_carousel valueForOption:(iCarouselOption)option withDefault:(CGFloat)value
{
switch (option)
{
case iCarouselOptionShowBackfaces:
{
return NO;
}
default:
{
return value;
}
}
}
【讨论】:
下面的代码将很好地淡化要退到后面的项目。享受吧。
func carousel(carousel: iCarousel, valueForOption option: iCarouselOption, withDefault value: CGFloat) -> CGFloat
{
if (option == .Spacing)
{
return value * 1.1
}
else if (option == .FadeMin)
{
return 0;
}
else if (option == .FadeMax)
{
return 0;
}
else if (option == .FadeRange)
{
return 3;
}
return value
}
【讨论】:
我尝试了@NickLockwood 建议的解决方案,但似乎不起作用 :-( 我将它添加到 viewForItemAtIndex 和 placeholderViewAtIndex 的两种方法中。我的图像尺寸为 115*115 像素,画布尺寸为 146*146 像素。但是,在 iCarouselOptionSpacing 下(在 valueForOption 方法内)设置返回值 'return value * 0.82f;' 对我有用。
【讨论】:
隐藏背景图片的最简单方法
func carousel(_ carousel: iCarousel, valueFor option: iCarouselOption, withDefault value: CGFloat) -> CGFloat {
switch option {
case .spacing:
return 1.05
case .visibleItems:
return 3
default:
return value
【讨论】: