iOS绘制带有底部边框的自定义视图

Posted

技术标签:

【中文标题】iOS绘制带有底部边框的自定义视图【英文标题】:iOS Draw custom view with bottom border 【发布时间】:2013-05-01 04:38:47 【问题描述】:

我有一个自定义 UIView,我想在 drawRect: 方法中手动绘制。我希望视图是一个黑色矩形,有一个圆角,底部只有一个红色边框。如何实现 drawRect: 来绘制这个视图?

【问题讨论】:

我尝试创建一个 CAShapeLayer 并通过 [self.layer addSublayer:shapeLayer] 添加,但我不知道如何创建不仅仅是黑色形状 【参考方案1】:

我会做类似的事情

CGContextRef context = UIGraphicsGetCurrentContext();

CGContextClearRect(context, rect);

CGContextSaveGState(context);

CGFloat cornerRadius = 10.0f;

CGFloat redBorderHeight = 4.0f;

CGFloat minx = 0.0f;
CGFloat miny = 0.0f;
CGFloat midx = rect.size.width/2;
CGFloat midy = rect.size.height/2;
CGFloat maxx = rect.size.width;
CGFloat maxy = rect.size.height;

CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path, nil, minx, midy);
CGPathAddArcToPoint(path, nil, minx, miny, midx, miny, 0);
CGPathAddArcToPoint(path, nil, maxx, miny, maxx, midy, 0);
CGPathAddArcToPoint(path, nil, maxx, maxy, midx, maxy, 0);
CGPathAddArcToPoint(path, nil, minx, maxy, minx, midy, cornerRadius);
CGPathCloseSubpath(path);

CGContextAddPath(context, path);

CGContextSetFillColorWithColor(context, [UIColor redColor].CGColor);

CGContextDrawPath(context, kCGPathFill);

CGContextRestoreGState(context);

midy = (rect.size.height-redBorderHeight)/2;
maxy = rect.size.height-redBorderHeight;

CGMutablePathRef path2 = CGPathCreateMutable();
CGPathMoveToPoint(path2, nil, minx, midy);
CGPathAddArcToPoint(path2, nil, minx, miny, midx, miny, 0);
CGPathAddArcToPoint(path2, nil, maxx, miny, maxx, midy, 0);
CGPathAddArcToPoint(path2, nil, maxx, maxy, midx, maxy, 0);
CGPathAddArcToPoint(path2, nil, minx, maxy, minx, midy, cornerRadius);
CGPathCloseSubpath(path2);

CGContextAddPath(context, path2);

CGContextSetFillColorWithColor(context, [UIColor blackColor].CGColor);

CGContextDrawPath(context, kCGPathFill);

【讨论】:

谢谢,我会试试这个。我在哪里可以了解更多关于这些绘图方法的信息?这是 CoreGraphics 吗?抱歉,我是 ios 开发新手。 苹果文档其实很好developer.apple.com/library/mac/#documentation/graphicsimaging/…

以上是关于iOS绘制带有底部边框的自定义视图的主要内容,如果未能解决你的问题,请参考以下文章

android中的自定义视图

具有图层列表背景可绘制的自定义视图呈现黑屏

iOS:带有面包屑路径的自定义导航栏?

在自定义绘制的视图中动画大小变化的问题

底部有视图的自定义视图控制器的布局指南(bottomLayoutGuide?)

看起来像 UIAlertView 的自定义视图