2009-12-24 7 views
6

Secondo i documenti del Mac Dev Center, dovresti essere in grado di impostare la proprietà contents di un CALayer e renderlo automaticamente. Tuttavia, non riesco ancora a visualizzare un'immagine semplice aggiungendo un sottolivello alla radice di UIView in seguito. Ho provato più varianti differenti; ecco quello che ho finora:iPhone: come aggiungo i livelli al livello radice di UIView per visualizzare un'immagine con la proprietà content?

(Nota: so che ci sono altri modi di rendering delle immagini, per i miei scopi mi piacerebbe usare CALayer per alcune delle cose più complicate che ho intenzione di entrare).

(in viewDidDisplay() della ViewController):

CALayer *theLayer = [CALayer layer]; 
[[[self view] layer] addSublayer:theLayer]; 
theLayer.contents = (id)[[UIImage imageNamed:@"mypic.png"] CGImage]; 
theLayer.contentsRect = CGRectMake(0.0f, 0.0f, 300.0f, 300.0f); 
theLayer.bounds = CGRectMake(0.0f, 0.0f, 300.0f, 400.0f); 

Qualcuno sa che cosa sto facendo male?

Grazie!

+0

Grazie Ben, hai capito. Il mio problema era il contenuto. Rect era troppo grande - non si era reso conto che si trattava di uno spazio di unità di coordinate. È interessante notare che l'immagine è posizionata in alto ea sinistra (vedo solo 1/4 in basso a destra di esso) - Devo regolare la posizione per ottenere l'angolo in alto a sinistra dell'immagine in alto. angolo destro dello schermo. Grazie! –

risposta

0

Non è necessario impostare la contentsRect (e se lo si fa, dovrebbe essere nell'unità di spazio di coordinate, probabilmente solo CGRectMake(0, 0, 1.0, 1.0).

Si potrebbe desiderare di impostare s position proprietà.

5
' il layer

si potrebbe caricare l'immagine in un UIImageView, che è decended da UIView e quindi ha la sua propria proprietà di livello.

UIImageView *imgView = [[UIImageView alloc] initWithFrame:frame]; 
imgView.image = [UIImage imageNamed:@"mypic.png"]; 

[[[self view] layer] addSublayer:[imgView layer]]; 
[imgView release]; 
0

è necessario creare due CALayer. Questo è il modo perfetto per visualizzare ° e immagine all'interno del CALayer.

CALayer *pulseLayer_ = [[CALayer layer] retain]; 

pulseLayer_.backgroundColor = [[UIColor whiteColor] CGColor]; 
pulseLayer_.bounds = CGRectMake(0., 0., 80., 80.); 
pulseLayer_.cornerRadius = 12.; 
pulseLayer_.position = self.view.center; 

[self.view.layer addSublayer:pulseLayer_]; 


CALayer *imageLayer = [CALayer layer]; 

imageLayer.frame = pulseLayer_.bounds; 
imageLayer.cornerRadius = 10.0; 
imageLayer.contents = (id) [UIImage imageNamed:@"jacklogo.png"].CGImage; 
imageLayer.masksToBounds = YES; 

[pulseLayer_ addSublayer:imageLayer]; 

[pulseLayer_ setNeedsDisplay]; 

Penso che sia la soluzione al tuo problema.

Problemi correlati