iCarousel - 如何将焦点转移到左侧

时间:2013-11-02 00:57:36

标签: ios iphone objective-c cocoa-touch icarousel

我需要以某种方式实现iCarousel,使其看起来像这样:Sample Image

我已经完成了所有修改,使它看起来像这样,但现在问题是iCarousel使用焦点中的中心图像。我可以这样做,如果只有两个图像,它们不会出现在中心而是出现在左边?把它想象成“左缩进”的内容。

我该怎么做?

5 个答案:

答案 0 :(得分:5)

iCarousal提供了一个属性,可以通过设置宽度偏移来向左或向右筛选焦点。

右侧使用swift 2.3的代码 -

/temporary/log/main.log

答案 1 :(得分:4)

这应该是您正在寻找的viewpointOffset

的iCarousel中的属性

示例...

// 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.widthview.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))