2012-06-27 12 views

Respuesta

42

¿Algo como esto?

UIView *overlay = [[UIView alloc] initWithFrame:CGRectMake(0, 0, myImageView.frame.size.width, myImageView.frame.size.height/2)]; 
[overlay setBackgroundColor:[UIColor colorWithRed:0 green:0 blue:0 alpha:0.3]]; 
[myImageView addSubview:overlay]; 
+0

No creo que se supone que añadir a subvistas UIImageView. –

+0

@ HermanJ.RadtkeIII ¿por qué dices eso? –

+0

Este [comentario] (http://stackoverflow.com/questions/4892770/why-cant-you-add-a-subview-to-a-uiimageview-that-is-the-view-outlet-of-a- uiview # comment21186181_4892770) lo dice mejor. –

4

¿Pensaste en agregar un UIView con fondo negro y 0.3 alfa como subvista a la vista de la imagen?

4

Esto es similar a la respuesta del MDT, excepto mediante las propiedades CALayer:

UIView *blackOverlay = [[UIView alloc] initWithFrame: imageView.frame]; 
blackOverlay.layer.backgroundColor = [[UIColor blackColor] CGColor]; 
blackOverlay.layer.opacity = 0.3f; 
[self.view addSubview: blackOverlay]; 
+3

Uh oh, hiciste un boo boo. El color de fondo de CALayer es un CGColor, no un UIColor ^^ ;. – borrrden

8

La respuesta correcta es MDT. Esta es solo otra forma de usar un CAGradientLayer al lado de UIView. Creo que hará lo que quieras con más opciones gráficas.

primero se debe añadir

#import <QuartzCore/QuartzCore.h> 

a su ViewController.m y en cualquier lugar que desee agregar esta plantilla a su uso UIImage:

CAGradientLayer *gradientLayer = [CAGradientLayer layer]; 
gradientLayer.frame = myImageView.layer.bounds; 

gradientLayer.colors = [NSArray arrayWithObjects: 
         (id)[UIColor colorWithWhite:0.9f alpha:0.7f].CGColor, 
         (id)[UIColor colorWithWhite:0.0f alpha:0.3f].CGColor, 
         nil]; 

gradientLayer.locations = [NSArray arrayWithObjects: 
          [NSNumber numberWithFloat:0.0f], 
          [NSNumber numberWithFloat:0.5f], 
          nil]; 

//If you want to have a border for this layer also 
gradientLayer.borderColor = [UIColor colorWithWhite:1.0f alpha:1.0f].CGColor; 
gradientLayer.borderWidth = 1; 
[myImageView.layer addSublayer:gradientLayer]; 

espero que esto le ayudará a hacer que

+0

¿podría elaborarlo por favor? –

11

Gracias a Mick MacCallum

Swift 3 Versión

let overlay: UIView = UIView(frame: CGRect(x: 0, y: 0, width: cell.imageView.frame.size.width, height: cell.imageView.frame.size.height)) 
overlay.backgroundColor = UIColor(red: 0/255, green: 0/255, blue: 0/255, alpha: 0.1) 
cell.imageView.addSubview(overlay) 

he utilizado para Swift 2,2

let overlay: UIView = UIView(frame: CGRectMake(0, 0, cell.imageView.frame.size.width, cell.imageView.frame.size.height)) 
overlay.backgroundColor = UIColor(red: 0/255, green: 0/255, blue: 0/255, alpha: 0.1) 
cell.imageView.addSubview(overlay) 
Cuestiones relacionadas