首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将CALayers作为子视图合并并翻转到CATransformLayer

将CALayers作为子视图合并并翻转到CATransformLayer
EN

Stack Overflow用户
提问于 2012-11-30 06:53:17
回答 1查看 775关注 0票数 1

基于前面的stackoverflow建议,我正在尝试使用添加到CATransformLayer中的CALayers创建一张扑克牌。这个想法是创建正面和背面CALayers,并将它们组合在CATransformLayer中,然后可以旋转、翻转等,并自动显示正确的一面。下面的示例代码尝试创建一张正面为绿色,背面为红色的单张卡片。

红色背面围绕Y轴翻转,因此它背对着绿色正面。绿色前轮的Z位置比红色后轮的Z位置高。

但是,当我进行转换时,我只是看到卡片处于未翻转的状态。你知道我在哪里做错了吗?

代码语言:javascript
复制
#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);

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-30 07:13:10

发现问题后,必须将转换应用于sublayerTransform属性,如下所示:

cardView.layer.sublayerTransform = ...

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13636259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档