Catransform3d 将Calayer作为子视图合并并翻转到CATTransferMlayer
根据前面的stackoverflow建议,我正在尝试使用添加到CATTransferMlayer的CALayers创建一张扑克牌。其想法是创建前后Calayer,并将它们组合在CATTransfermLayer中,然后可以旋转、翻转等,并自动显示正确的一面。下面是尝试创建一张正面为绿色背面为红色的卡片的示例代码 红色背面围绕Y轴翻转,使其背对绿色正面。绿色正面的calayer比红色背面的Z位置“更高” 不过,当我进行转换时,我只是看到卡处于非翻转状态。你知道我哪里做错了吗Catransform3d 将Calayer作为子视图合并并翻转到CATTransferMlayer,catransform3d,catransformlayer,Catransform3d,Catransformlayer,根据前面的stackoverflow建议,我正在尝试使用添加到CATTransferMlayer的CALayers创建一张扑克牌。其想法是创建前后Calayer,并将它们组合在CATTransfermLayer中,然后可以旋转、翻转等,并自动显示正确的一面。下面是尝试创建一张正面为绿色背面为红色的卡片的示例代码 红色背面围绕Y轴翻转,使其背对绿色正面。绿色正面的calayer比红色背面的Z位置“更高” 不过,当我进行转换时,我只是看到卡处于非翻转状态。你知道我哪里做错了吗 #define DEG
#define DEGREES_TO_RADIANS(angle) (angle * M_PI / 180.0)
- (void)viewDidLoad
{
[super viewDidLoad];
CATransformLayer *cardContainer = [CATransformLayer layer];
cardContainer.bounds = CGRectMake(0,0, 150,200);
CALayer *cardFront = [CALayer layer];
cardFront.frame = cardContainer.bounds;
cardFront.backgroundColor = [UIColor greenColor].CGColor;
cardFront.borderColor = [UIColor blackColor].CGColor;
cardFront.borderWidth = 2.0;
cardFront.cornerRadius = 30.0;
cardFront.zPosition = 2; // Put front of card on top relative to back of card
cardFront.doubleSided = NO;
[cardContainer addSublayer:cardFront];
CALayer *cardBack = [CALayer layer];
cardBack.frame = cardContainer.bounds;
cardBack.backgroundColor = [UIColor redColor].CGColor;
cardBack.zPosition = 1;
cardBack.doubleSided = NO;
// Flip cardBack image so it is facing outward and visible when flipped
cardBack.transform = CATransform3DMakeRotation(DEGREES_TO_RADIANS(180),0.0,1.0,0.0);
[cardContainer addSublayer:cardBack];
UIView* cardView = [[UIView alloc] initWithFrame:cardContainer.bounds];
cardView.center = CGPointMake(self.view.center.x, self.view.center.y);
[cardView.layer addSublayer:cardContainer];
[self.view addSubview:cardView];
// Show the card flipped over (desired the red side to be showing, but instead shows green)
cardView.layer.transform = CATransform3DMakeRotation(DEGREES_TO_RADIANS(180),0.0,1.0,0.0);
}
发现问题后,必须将转换应用于sublayerTransform属性,如中所示:
cardView.layer.sublayerTransform=…发现问题,必须将转换应用于sublayerTransform属性,如中所示: cardView.layer.sublayerTransform=