0

重複の可能性:
パースペクティブ変換をUIViewに適用するにはどうすればよいですか?

こんにちは私はUIViewこのように傾けようとしています:ここに画像の説明を入力してください

CATransform3DRotateと他のコア機能を使ってやりたいです。出来ますか?

これまでに行ったこと:LowerTableという名前のオレンジ色のビューを作成するメソッドがあります。

-(void)createShelf
{
    CGRect parentFrame=parent.frame;
    float width=200;
    float height=200;
    lowerTable=[[UIView alloc] init];
    lowerTable.backgroundColor=[UIColor orangeColor];
    lowerTable.frame=CGRectMake(60, parentFrame.size.height/2, width, height);
    [self setAnchorPoint:CGPointMake(0.5, 0) forLayer:lowerTable.layer];
    [parent addSubview:lowerTable];

}

setAnchorPointメソッドは次のとおりです。

//sets the anchor point of the layer in proper place.
-(void)setAnchorPoint:(CGPoint)anchorPoint forLayer:(CALayer *)layer
{
    CGPoint newPoint = CGPointMake(layer.bounds.size.width * anchorPoint.x, layer.bounds.size.height * anchorPoint.y);
    CGPoint oldPoint = CGPointMake(layer.bounds.size.width * layer.anchorPoint.x, layer.bounds.size.height * layer.anchorPoint.y);

    newPoint = CGPointApplyAffineTransform(newPoint,CATransform3DGetAffineTransform(layer.transform));
    oldPoint = CGPointApplyAffineTransform(oldPoint,CATransform3DGetAffineTransform(layer.transform));

    CGPoint position = layer.position;

    position.x -= oldPoint.x;
    position.x += newPoint.x;

    position.y -= oldPoint.y;
    position.y += newPoint.y;

    layer.position = position;
    layer.anchorPoint = anchorPoint;
}

アンカーポイントとビューが設定されたら、ボタンをタップして次のメソッドを呼び出し、変換を適用します。

-(void)animateLayer:(CALayer *)layer
{
    [UIView animateWithDuration:2 delay:0.0 options:UIViewAnimationOptionAllowAnimatedContent animations:^{
        CATransform3D _3Dt = layer.transform;
        _3Dt = CATransform3DRotate(_3Dt, 30*M_PI/180, 1, 0, 0.0);
        layer.zPosition=2000;
        layer.transform=_3Dt;

    } completion:^(BOOL finished) {
    }];

}

それがしていることはUIView、角度変換を使用して、の高さを単純に下げることです。これは、ビューを私の与えられた画像のように形作る必要があることは明らかです。しかし、私はそれができず、多くの方法を試しました。いくつかの例と明確な説明を手伝ってください。

前もって感謝します。

4

0 に答える 0