-1

我必须在透明的 UIView 上画一条黑线,但是尽管将线的 alpha 设置为 1,但这需要 UIView 的透明度。我能怎么做?

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

在实施中

 #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;
}
4

1 回答 1

0

您必须将 UIView 的 alpha 设置放在 drawRect 而不是 initWithFrame

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

if (self) {

    self.alpha=0.3;


  }

return self;
 }

是的

 - (void)drawRect:(CGRect)rect {

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


  }
于 2013-10-02T13:53:44.900 回答