代码之家  ›  专栏  ›  技术社区  ›  Rahul Kalidindi

如何动态更改CALayer的内容

  •  0
  • Rahul Kalidindi  · 技术社区  · 14 年前

    我正在创建一些Calayer,并使用CATransform3D转换它们

    imageLayer.frame = CGRectMake(-22.0f, 188.0f, 180.0f, 50.0f);
    imageLayer.transform = CATransform3DMakeRotation(120.0f * M_PI / 180.0f,
                                                     0.0f, 15.0f, 0.0f);
    imageLayer.contents = (id)[[UIImage imageNamed:@"photo.png"] CGImage];
    [caLayer addSublayer:imageLayer];
    

    这是一个输出。。。 alt text

    我保留了未转换的图像作为图像视图,以便可以处理刷卡操作。我有10张照片。因此,当用户在主图像上滑动时,相应的图像应该加载到图层和图像视图中。我可以加载图像视图,但在动态加载CALayers时遇到了一些问题。

    我试过了

    NSArray *array=[caLayer sublayers];
        caLayer = [array objectAtIndex:entryImageIndex];
        //caLayer.contents=(id)[[UIImage imageNamed:@"flashImage1.jpg"] CGImage];
        caLayer.contents=(id)[[UIImage imageWithCGImage:[imageArray objectAtIndex:entryImageIndex-1]]];
    

    但这给了我错误。有谁能告诉我如何用图像动态地填充CALayers…任何示例代码都会有很大的帮助。。。

    1 回复  |  直到 14 年前
        1
  •  2
  •   User    14 年前

    而不是

        caLayer.contents=(id)[[UIImage imageWithCGImage:
    [imageArray objectAtIndex:entryImageIndex-1]
    ]
    ];
    

    尝试

        caLayer.contents=(id)[UIImage imageWithCGImage:
    [imageArray objectAtIndex:entryImageIndex-1]
    ].CGImage;
    

    caLayer.contents=(id)[imageArray objectAtIndex:entryImageIndex-1];