這就是它的樣子。我想讓黑色背景變得清晰,看起來似乎無法理解。爲什麼我的「啓動幀」變黑? CGRect用initwithframe圓角繪圖
這裏是的loadView:
loadView { CGRect frame = CGRectMake(screenWidth - OFFSET, DEFAULT_PADDING, 140, 40); miniC* mcView = [ [ [miniC alloc] initWithFrame:frame] autorelease]; mcView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin; [[self view] addSubview:mcView]; }
這裏就是我的drawRect我稱之爲米尼奇:
- (void)drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
// Set Background Color & Border Color
CGColorRef bgColor = [UIColor scrollViewTexturedBackgroundColor].CGColor;
CGColorRef borderColor = [UIColor grayColor].CGColor;
CGRect Rect = self.bounds;
// Round Corners
roundCorners(context, Rect);
// Fill with bgcolor
fillBackgroundColor(context, Rect, bgColor);
// Add 1 px stroke
CGRect strokeRect = Rect;
strokeRect.size.height -= 1;
strokeRect = (strokeRect);
CGContextSetStrokeColorWithColor(context, borderColor);
CGContextSetLineWidth(context, 1.0);
CGContextStrokeRect(context, strokeRect);
// Overlay Rect to Tint "scrollViewTexturedBackgroundColor" UIColor
CGContextRef secondContext = UIGraphicsGetCurrentContext();
// Set Background Color & Border Color
CGColorRef obgColor = [UIColor colorWithRed:255/255 green:255/255 blue:255/255 alpha:.3].CGColor;
// Round Corners
roundCorners(context, Rect);
// Fill with bgcolor
fillBackgroundColor(secondContext, Rect, obgColor);
}
的代碼繪製的圓框我正在尋找一箇中風,但是新的圓形b後面有一個黑框牛。我一直在嘗試一堆不同的東西,但似乎無法弄清楚如何使背景顏色清晰。此外,我知道我可以用QuartzCore做到這一點,但我不想。
P.S.我是objective-c的新手。
編輯:
空隙roundCorners(CGContextRef上下文中,的CGRect RECT){
CGContextClearRect(context, rect); CGFloat c = INSET + CORNER_RADIUS; CGContextMoveToPoint(context, INSET, c); CGContextAddArcToPoint(context, INSET, INSET, c, INSET, CORNER_RADIUS); CGContextAddLineToPoint(context, rect.size.width - c, INSET); CGContextAddArcToPoint(context, rect.size.width - INSET, INSET, rect.size.width - INSET, c, CORNER_RADIUS); CGContextAddLineToPoint(context, rect.size.width - INSET, rect.size.height - c); CGContextAddArcToPoint(context, rect.size.width - INSET, rect.size.height - INSET, rect.size.width - c, rect.size.height -
INSET,CORNER_RADIUS); CGContextAddLineToPoint(context,c,rect.size.height - INSET);
CGContextAddArcToPoint(context, INSET, rect.size.height - INSET, INSET, rect.size.height > - c, CORNER_RADIUS); CGContextClosePath(context); CGContextClip(context); CGContextSetFillColorWithColor(context, [UIColor scrollViewTexturedBackgroundColor].CGColor); CGContextFillRect(context, CGRectMake(0, 0, rect.size.width - INSET, rect.size.height - INSET));
}
無效fillBackgroundColor(CGContextRef背景下,的CGRect RECT,CGColorRef BGCOLOR){
CGContextSetFillColorWithColor(context, bgColor); CGContextFillRect(context, CGRectMake(0, 0, rect.size.width, rect.size.height));
}
您是否記得使視圖不透明? –
絕對沒有。我在哪裏設置? – morcutt
您可以將「mcView.opaque = NO」添加到您的loadView中,以確保正是如此。然後,如果這是唯一的問題,請將其移至Paul s的initWithFrame。爲你寫信。 –