0

以下のコードを使用して、必要に応じてsublayer1とsublayer2を描画します。アニメーションが発生すると、sublayer1は期待どおりに移動し、sublayer2は最初は左上に移動し、次に右下に移動します。(2は1内の同じ場所に残りません)

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    // Create a blue sublayer 
    sublayer1 = [CALayer layer];
    sublayer1.backgroundColor = [[UIColor blueColor] CGColor];
    sublayer1.frame = CGRectMake(30, 30, 120, 190);
    sublayer1.position = CGPointMake(90, 130);
    [self.view.layer addSublayer:sublayer1];

    // Create a sublayer within blue layer
    CALayer *sublayer2 = [CALayer layer];
    sublayer2.bounds = CGRectMake(0, 0, 60, 60);
    sublayer2.frame = CGRectMake(30, 50, 60, 60);
    sublayer2.contents = (id)[[UIImage imageNamed:@"sun.png"] CGImage];
    [sublayer1 addSublayer:sublayer2];

    [self performSelector:@selector(moveBlueLayer) withObject:nil afterDelay:1.0];
}

- (void)moveBlueLayer
{
    // Create a new position for animation to move to
    CGPoint endPostition = CGPointMake(190, 285);

    [CATransaction setAnimationDuration:4];
    sublayer1.bounds = CGRectMake(130, 190, 120, 190);
    sublayer1.position = endPostition;
}

彼らは一緒に動くことになっていないのですか?なぜそうしないのか、何か考えはありますか?私は今のところ、「暗黙の」アニメーションの解決策に固執しようとしています。

4

2 に答える 2

0

すべきでは[sublayer1 addSublayer:flowerlayer];ない[sublayer1 addSublayer:sublayer2];

于 2012-05-02T21:44:27.250 に答える
0

下から3番目の線が不安定な動作を引き起こしていました。

- (void)moveBlueLayer
{
   // Create a new position for animation to move to
   CGPoint endPostition = CGPointMake(190, 285);

   [CATransaction setAnimationDuration:4];
   // Next line causing the problem
   // sublayer1.bounds = CGRectMake(130, 190, 120, 190);
   sublayer1.position = endPostition;
}
于 2012-05-03T12:56:36.030 に答える