我正在尝试创建一个像这样的封面流图像幻灯片:
我不得不说我不想使用像iCarousel这样的其他框架我需要编写自己的代码。这是我的代码,但它只显示每页一个图像,我想知道如何更改我的代码以添加 if (change == ItemPositionChange) {
QPointF newPos = value.toPointF();
qreal xV = round(newPos.x()/gridsize)*gridsize;
qreal yV = round(newPos.y()/gridsize)*gridsize;
parentItem()->setPos(mapToParent(QPointF(xV,yV)));
QPointF pasdf = mapToParent(QPointF(xV,yV));
QPointF poin7 = mapFromScene(pos());
QPointF poin8 = mapFromScene(QPointF(xV,yV));
QPointF point3 = mapToParent(pos())+QPointF(xV,yV);
QPointF point = scenePos();
QPointF pint5 = mapToParent(QPointF(xV,yV));
QPointF point2 = mapToScene(xV,yV);
QPointF point4 = mapToScene(pos());
return QGraphicsItem::itemChange(change, pos()); // don't change position of item just position of parent
}else{
return QGraphicsItem::itemChange(change, value);
}
和previous
图像?
next
答案 0 :(得分:2)
正如其他人所说,如果您不想使用内置CoverFlow的iCarousel,您应该使用UICollectionView。它是为您想要的而打造的。
当然你可以从UIScrollView
开始这样做,但是可能需要经验丰富的开发人员几周的全职工作才能让干净的设计工作和调试,结果看起来和感觉都是一个整体当你完成时很像集合视图,只是没有灵活性或可维护性。此外,您需要非常高级的核心动画知识,这非常专业,而且没有很好的文档记录。
Google搜索" UICollectionView CoverFlow Swift"在Github上找到了这个框架:
https://github.com/sumitlni/LNICoverFlowLayout
如果您决定自己这样做,您至少可以将该框架视为您需要做的路线图。
答案 1 :(得分:0)
您将scrollview的宽度设置为等于整个视图,使其低于85%或90%或根据您的要求。
这将解决你问题的一半。
通过查看设计,我认为您希望视图具有动画效果。 首先,关闭滚动视图的滚动。
然后在滚动视图上添加2个手势,一个用于向右滑动,另一个用于向左滑动。
然后根据手势一次滚动视图1页面,并通过将其x位置更改1页并减小其大小并增加传入的大小来设置视图大小的动画。 您也可以使用默认方法UIScrollView.animate。