2012-06-27 13 views

Odpowiedz

42

Coś takiego?

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

Nie sądzę, ci mają dodać subviews do UIImageView. –

+0

@ HermanJ.RadtkeIII dlaczego tak mówisz? –

+0

To [komentarz] (http://stackoverflow.com/questions/4892770/why-cant-you-add-a-subview-to-a-uiimageview-to-is-view-outlet-of-a- uiview # comment21186181_4892770) mówi najlepiej. –

4

Czy zastanawiałeś się nad dodaniem UIView z czarnym tłemColor i 0.3 alfa jako podzbiorem widoku obrazu?

4

ta jest podobna do odpowiedzi MDT za wyjątkiem stosowania właściwości 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, zrobiłeś boo boo. Kolor tła CALayera to CGColor, a nie UIColor ^^ ;. – borrrden

8

MDT odpowiedź jest poprawna. To jest po prostu inny sposób użycia CAGradientLayer obok UIView. Myślę, że zrobi to, co chcesz, dzięki większej liczbie opcji graficznych.

najpierw należy dodać

#import <QuartzCore/QuartzCore.h> 

do ViewController.m i każdym miejscu, które chcesz dodać tę nakładkę do UIImage użytku:

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]; 

Mam nadzieję, że to pomoże Ci zrobić to

+0

czy mógłbyś to rozwinąć? –

11

Dzięki Mick MacCallum

Swift 3 Wersja

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) 

Użyłem do 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)