Tôi đã có một lớp con uiview nơi tôi đang cố gắng để vẽ một hình chữ nhật tròn với một bóng đổ. Mặc dù nó vẽ cả hai yếu tố, tôi có thể nhìn thấy bóng qua hình chữ nhật được làm tròn. Tôi mới đến CG vì vậy tôi có thể thiếu một cái gì đó đơn giản (mặc dù nó không có vẻ là alpha của điền được thiết lập để 1). Đây là mã vẽ trực tiếp.UIView với hình chữ nhật tròn và bóng đổ: bóng xuất hiện phía trên hình chữ nhật
- (void)drawRect:(CGRect)rect {
// get the contect
CGContextRef context = UIGraphicsGetCurrentContext();
//for the shadow, save the state then draw the shadow
CGContextSaveGState(context);
CGContextSetShadow(context, CGSizeMake(4,-5), 10);
//now draw the rounded rectangle
CGContextSetStrokeColorWithColor(context, [[UIColor blackColor] CGColor]);
CGContextSetRGBFillColor(context, 0.0, 0.0, 1.0, 1.0);
//since I need room in my rect for the shadow, make the rounded rectangle a little smaller than frame
CGRect rrect = CGRectMake(CGRectGetMinX(rect), CGRectGetMinY(rect), CGRectGetWidth(rect)-30, CGRectGetHeight(rect)-30);
CGFloat radius = self.cornerRadius;
// the rest is pretty much copied from Apples example
CGFloat minx = CGRectGetMinX(rrect), midx = CGRectGetMidX(rrect), maxx = CGRectGetMaxX(rrect);
CGFloat miny = CGRectGetMinY(rrect), midy = CGRectGetMidY(rrect), maxy = CGRectGetMaxY(rrect);
// Start at 1
CGContextMoveToPoint(context, minx, midy);
// Add an arc through 2 to 3
CGContextAddArcToPoint(context, minx, miny, midx, miny, radius);
// Add an arc through 4 to 5
CGContextAddArcToPoint(context, maxx, miny, maxx, midy, radius);
// Add an arc through 6 to 7
CGContextAddArcToPoint(context, maxx, maxy, midx, maxy, radius);
// Add an arc through 8 to 9
CGContextAddArcToPoint(context, minx, maxy, minx, midy, radius);
// Close the path
CGContextClosePath(context);
// Fill & stroke the path
CGContextDrawPath(context, kCGPathFillStroke);
//for the shadow
CGContextRestoreGState(context);
}
đã đọc bài viết trên blog này http://bynomial.com/blog/?p=52&cpage=1#comment-1115. Nó trả lời làm thế nào để làm điều này. –
các giải pháp tài liệu ở đây là tốt nhất cho tôi, bởi vì nó cho tôi thấy làm thế nào để sử dụng một hình ảnh tùy chỉnh (với maskToBounds = YES) cũng như bóng tối. cảm ơn! – Mark
@ John: Rất nhiều người cảm ơn vì liên kết, bạn thân ... đã giúp tôi bắt đầu. :) – viral