W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
CAReplicatorLayer
的目的是為了高效生成許多相似的圖層。它會繪制一個或多個圖層的子圖層,并在每個復制體上應用不同的變換??瓷先パ菔灸軌蚋咏忉屵@些,我們來寫個例子吧。
清單6.8中,我們在屏幕的中間創(chuàng)建了一個小白色方塊圖層,然后用CAReplicatorLayer
生成十個圖層組成一個圓圈。instanceCount
屬性指定了圖層需要重復多少次。instanceTransform
指定了一個CATransform3D
3D變換(這種情況下,下一圖層的位移和旋轉(zhuǎn)將會移動到圓圈的下一個點)。
變換是逐步增加的,每個實例都是相對于前一實例布局。這就是為什么這些復制體最終不會出現(xiàn)在同意位置上,圖6.8是代碼運行結(jié)果。
清單6.8 用CAReplicatorLayer
重復圖層
@interface ViewController ()
@property (nonatomic, weak) IBOutlet UIView *containerView;
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
//create a replicator layer and add it to our view
CAReplicatorLayer *replicator = [CAReplicatorLayer layer];
replicator.frame = self.containerView.bounds;
[self.containerView.layer addSublayer:replicator];
//configure the replicator
replicator.instanceCount = 10;
//apply a transform for each instance
CATransform3D transform = CATransform3DIdentity;
transform = CATransform3DTranslate(transform, 0, 200, 0);
transform = CATransform3DRotate(transform, M_PI / 5.0, 0, 0, 1);
transform = CATransform3DTranslate(transform, 0, -200, 0);
replicator.instanceTransform = transform;
//apply a color shift for each instance
replicator.instanceBlueOffset = -0.1;
replicator.instanceGreenOffset = -0.1;
//create a sublayer and place it inside the replicator
CALayer *layer = [CALayer layer];
layer.frame = CGRectMake(100.0f, 100.0f, 100.0f, 100.0f);
layer.backgroundColor = [UIColor whiteColor].CGColor;
[replicator addSublayer:layer];
}
@end
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: