0

ビューのレイヤーに配列からサブレイヤーとして 2 つの CALayer を追加しようとしています。次のコードは、試行された最後のサブレイヤー (q という名前) のみを追加します。これを最初に配列内の 2 つだけで機能させようとしているので、後で for ループで好きなだけ追加できます。2 つのサブレイヤーを同時に表示するための提案はありますか?

ViewController.h は

#import <QuartzCore/QuartzCore.h>
#import <UIKit/UIKit.h>

@interface ViewController : UIViewController{
    UIImage *beeImage;

    UIImageView *beeView;
    CALayer *beeLayer;
    CABasicAnimation *animation;

    NSMutableArray *beeArray;

    }

@property(retain,nonatomic) UIImage *beeImage;
@property(retain,nonatomic) NSArray *beeArray;
@property(retain,nonatomic) UIImageView *beeView;
@property(retain,nonatomic) CALayer *beeLayer;
@property(retain,nonatomic)CABasicAnimation *animation;
-(void) animate;
-(void) makeSwarm;

@end

これはViewController.mです

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

-(void) makeSwarm{

    self.view.layer.backgroundColor = [UIColor orangeColor].CGColor;
    self.view.layer.cornerRadius = 20.0;
    self.view.layer.frame = CGRectInset(self.view.layer.frame, 20, 20);

    CGRect beeFrame;
    beeArray = [[NSMutableArray alloc] init];
    beeImage = [UIImage imageNamed:@"bee50x55px.png"];
    beeFrame = CGRectMake(0, 0, beeImage.size.width, beeImage.size.height);
    beeView = [[UIImageView alloc] initWithFrame:beeFrame];
    beeView.image = beeImage;    
    beeLayer = [beeView layer];


    CALayer *p = [[CALayer alloc] init];
    CALayer *q = [[CALayer alloc] init];


    [beeArray addObject: beeLayer];     
    [beeArray addObject: beeLayer];  

    p = [beeArray objectAtIndex: 0];    

    [p setPosition:CGPointMake(10, 10)];
    p.zPosition=0;
    [self.view.layer addSublayer:p];

    q = [beeArray objectAtIndex: 1];    

    [q setPosition:CGPointMake(160,240)];
    q.zPosition=1;
    [self.view.layer insertSublayer:q below:p];        


}
4

1 に答える 1

0

コメントに残された答えを受け入れる方法(または可能かどうか)はまだわかりません。したがって、これを回答済みとしてマークするために、最初の正解を引用します。これがここの担当者のlnafzigerに正しく役立たない場合は申し訳ありませんが、他に何をすべきかわかりません。

lnafzigerは言った...

「同じオブジェクトである可能性があります。代わりに[beeArrayaddObject:[beeLayer copy]]を試してください。–lnafziger」

これはうまくいきました。どうもありがとうございます。

于 2012-04-13T17:50:19.173 に答える