私の要件は、画像のリストを水平方向に表示することです。画像をタッチすると、画像が横に移動し、次の画像が前面に表示されます。このように、画像を並べて移動する必要があります。その後、次の方法があります。画像のリストをスクロールしますか?または任意のタイプのアニメーションに移動できますか?
このように画像を配置・移動します。どうすればいいですか?
私の要件は、画像のリストを水平方向に表示することです。画像をタッチすると、画像が横に移動し、次の画像が前面に表示されます。このように、画像を並べて移動する必要があります。その後、次の方法があります。画像のリストをスクロールしますか?または任意のタイプのアニメーションに移動できますか?
このように画像を配置・移動します。どうすればいいですか?
CoverFlowの作業モジュールを作成しました.....
を使用して3D変換を可能にするレイヤーで変換を試してください。
-(void) rotateView3D:(UIView *)myView:(CGFloat)angle
{
CATransform3D affinAndScaleTransform;
if (angle==30.0f||angle==-30.0f)
{
affinAndScaleTransform = CATransform3DMakeAffineTransform(CGAffineTransformMakeScale(0.9f, 0.9f));
}
else
{
affinAndScaleTransform = CATransform3DMakeAffineTransform(CGAffineTransformMakeScale(1.0f, 1.0f));
}
CALayer *layer = myView.layer;
// layer.borderColor = [[UIColor blackColor] CGColor];
// layer.borderWidth = 2.0f;
CATransform3D rotationAndPerspectiveTransform = CATransform3DIdentity;
rotationAndPerspectiveTransform.m34 = 1.0 / -500;
rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform, angle * M_PI / 180.0f, 0.0f, 1.0f, 0.0f);
[layer setTransform:CATransform3DConcat(rotationAndPerspectiveTransform, affinAndScaleTransform)];
}
ビューをスクロールするには、ジェスチャーを追加します......。
左ジェスチャーの場合は、このようないくつかの泥棒を使用してください.......。
{
UIView * view0 = [self.view viewWithTag:-1111];
UIView * view1 = [self.view viewWithTag:1111];
UIView * view2 = [self.view viewWithTag:2222];
UIView * view3 = [self.view viewWithTag:3333];
UIView * view4 = [self.view viewWithTag:4444];
[view4 setFrame:self.rect0];
int preViewNo = self.leftProduct-1;
if (preViewNo<0)preViewNo=self.productArray.count-1;
[UIView animateWithDuration:0.4 animations:^
{
[view0 setFrame:self.rect1];
[self rotateView3D:view0 : 30.0f];
[view1 setFrame:self.rect2];
[self rotateView3D:view1 : 0.0f];
[view2 setFrame:self.rect3];
[self rotateView3D:view2 : -30.0f];
[view3 setFrame:self.rect4];
[self rotateView3D:view4 : 0.0f];
}];
[self setdescriptionView:view0 :[self.productArray objectAtIndex:preViewNo]];
[view0 setTag:1111];
[view1 setTag:2222];
[view2 setTag:3333];
[view3 setTag:4444];
[view4 setTag:-1111];
self.currentProduct--;
self.rightProduct--;
self.leftProduct--;
if (self.currentProduct < 0) self.currentProduct=self.productArray.count-1;
if (self.rightProduct < 0) self.rightProduct=self.productArray.count-1;
if (self.leftProduct < 0) self.leftProduct=self.productArray.count-1;
}
右側のジェスチャレコグナイザでは、次のようなものを使用します。
{
UIView * view0 = [self.view viewWithTag:-1111];
UIView * view1 = [self.view viewWithTag:1111];
UIView * view2 = [self.view viewWithTag:2222];
UIView * view3 = [self.view viewWithTag:3333];
UIView * view4 = [self.view viewWithTag:4444];
[view0 setFrame:self.rect4];
int nextViewNo = self.rightProduct+1;
if (nextViewNo>=self.productArray.count)nextViewNo=0;
[UIView animateWithDuration:0.4 animations:^
{
[view4 setFrame:self.rect3];
[self rotateView3D:view4 : -30.0f];
[view3 setFrame:self.rect2];
[self rotateView3D:view3 : 0.0f];
[view2 setFrame:self.rect1];
[self rotateView3D:view2 : 30.0f];
[view1 setFrame:self.rect0];
[self rotateView3D:view1 : 0.0f];
}];
[self setdescriptionView:view4 :[self.productArray objectAtIndex:nextViewNo]];
[view0 setTag:4444];
[view1 setTag:-1111];
[view2 setTag:1111];
[view3 setTag:2222];
[view4 setTag:3333];
self.currentProduct++;
self.rightProduct++;
self.leftProduct++;
if (self.currentProduct >= self.productArray.count) self.currentProduct=0;
if (self.rightProduct >= self.productArray.count) self.rightProduct=0;
if (self.leftProduct >= self.productArray.count) self.leftProduct=0;
}
技術的な理由で、カスタムカバーフローを作成する必要があります。
これも試すことができます.....
私はこの問題を解決します。このリンクでサンプルの例を見つけました。http://code4app.net/category/scrollview