アレイからサブレイヤとして2つのCALayersをビューのレイヤーに追加しようとしています。次のコードでは、試行された最後のサブレイヤだけが追加されます(名前はqです)。私はこれを最初に配列の2つだけで動作させようとしていますので、後でforループを使って多くのものを追加することができます。 2つのサブレイヤを同時に表示するための提案はありますか?Xcode 4に複数のサブレイヤを追加していますか? 1つしか表示されません
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];
}
これは同じオブジェクトである可能性があります。代わりに '[beeArray addObject:[beeLayer copy]];'を試してください。 – lnafziger
はい、それは同じオブジェクトなので、CALayersはコピーをサポートしていないので、CALayerの全く新しいインスタンスを作成することが最適なオプションになるでしょう。 – Otium
ありがとう!私の最初のグループのアニメーションに行くので、これは私のために必要な前提条件です。問題はポインタの理解が不十分であったことを修正しますか(それは私の新しい概念です)。 –