我需要以某种方式实现iCarousel,使其看起来像这样:
我已经完成了所有修改,使它看起来像这样,但现在问题是iCarousel使用焦点中的中心图像。我可以这样做,如果只有两个图像,它们不会出现在中心而是出现在左边?把它想象成“左缩进”的内容。
我该怎么做?
答案 0 :(得分:5)
iCarousal提供了一个属性,可以通过设置宽度偏移来向左或向右筛选焦点。
右侧使用swift 2.3的代码 -
/temporary/log/main.log
答案 1 :(得分:4)
这应该是您正在寻找的viewpointOffset
示例...
// Modifiy widthOffset so it works well in your case
float widthOffset = 100.0;
[_yourCarousel setViewpointOffset:CGSizeMake(widthOffset, 0)];
答案 2 :(得分:2)
viewpointOffset
属性并不是真的那样。它会让你对齐一条边,但是当你滚动到结尾时你会遇到同样的问题。
iCarousel不是为此而设计的。我建议您切换到SwipeView(http://github.com/nicklockwood/SwipeView),它具有相同的委托/数据源接口,但具有alignment
属性,您可以使用它来设置边缘对齐,如下所示:
swipeView.alignment = SwipeViewAlignmentEdge;
答案 3 :(得分:0)
访问https://github.com/nicklockwood/iCarousel/issues/142 它可能有所帮助。 nicklockwood(作者)回答:
您可以使用委托并创建自定义转换,以负值抵消所有视图。像这样:
- (CATransform3D)carousel:(iCarousel *)carousel itemTransformForOffset:(CGFloat)offset baseTransform:(CATransform3D)transform
{
float OFFSET_WIDTH = ...; // set this to about half the width of your view
return CATransform3DMakeTranslation(offset * itemWidth - OFFSET_WIDTH, 0, 0);
}
唯一的问题是当你到达最右端时 旋转木马会有差距,但你可以使用占位符视图 填补空白。
答案 4 :(得分:0)
我遇到了同样的问题。通过简单的数学运算,我找到了一个更准确的答案。我将这段代码放入了viewDidAppear()
函数中,因为当我将其放入viewDidLoad()
时,view.frame.width
和view.frame.height
占据了故事板的原始宽度,但没有适合更大的设备。
我的用例如下。我的iCarousel物品是简单的正方形。这意味着,例如,我的高度为3,宽度为3。但是我的iCarousel视图的宽度为5。总的来说,我有5-3 = 2个空间,左1个,右1个(因为我们知道它的默认值为居中)。因此,最后一步是用2除以得到一个站点上的宽度=1。有了这一知识,我们只需要将viewPointOffset
设置为1(在这种情况下)即可。
最终公式:let widthOffset = (view.frame.width - view.frame.height) / 2
我的代码中的示例:
let widthOffset: Float = Float((mDetailCarousel.frame.width - mDetailCarousel.frame.height) / 2 )
mDetailCarousel.viewpointOffset = CGSize(width: CGFloat(widthOffset), height: CGFloat(0))