Question

I have to draw a black line on a transparent UIView, but despite having set the alpha of the line equal to 1, however this takes the degree of transparency of UIView. how can I do?

  #import <UIKit/UIKit.h>

 @interface FinalAlgView : UIView{
@private
   //....
   CGFloat lineWidth;
   UIColor *lineColor;
   UIImage *curImage;

CGMutablePathRef path;
  }

 @property (nonatomic, retain) UIColor *lineColor;
 @property (readwrite) CGFloat lineWidth;
 @property (assign, nonatomic) BOOL empty;

in implementation

 #define DEFAULT_COLOR [UIColor colorWithRed:127.0/255.0 green:255.0/255.0 blue:0/255.0 alpha:0.6];
  #define DEFAULT_WIDTH 20.0f


  - (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];

if (self) {
    self.frame = CGRectMake(0, 0, 1024, 768);
    self.lineWidth = DEFAULT_WIDTH;
    self.lineColor = DEFAULT_COLOR;
    self.empty = YES;
    path = CGPathCreateMutable();

    self.alpha=0.3;
   self.opaque = NO;
   }

   return self;
 }


 - (void)drawRect:(CGRect)rect {
[[UIColor grayColor] set];


UIRectFill(rect);

CGContextRef context = UIGraphicsGetCurrentContext();

CGContextAddPath(context, path);
CGContextSetLineCap(context, kCGLineCapRound);
CGContextSetLineWidth(context, self.lineWidth);
CGContextSetStrokeColorWithColor(context, self.lineColor.CGColor);

CGContextStrokePath(context);

self.empty = NO;
}
Was it helpful?

Solution

you have to put the setting the alpha of UIView in drawRect and not in initWithFrame

NO

 - (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];

if (self) {

    self.alpha=0.3;


  }

return self;
 }

YES

 - (void)drawRect:(CGRect)rect {

    [[UIColor colorWithRed:200.0/225.0 green:200.0/255.0 blue:200.0/255.0 alpha:0.0]set];


  }
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top