-1

透明な UIView に黒い線を描画する必要がありますが、線のアルファを 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 のアルファを initWithFrame ではなく drawRect に設定する必要があります

いいえ

 - (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 に答える