我想在viewContoller的视图中绘制一个填充的矩形。 我在viewDidLoad中编写了下面的代码。但没有变化。 有什么问题?
CGRect rectangle = CGRectMake(0, 100, 320, 100);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetRGBFillColor(context, 1.0, 0.0, 0.0, 1.0);
CGContextSetRGBStrokeColor(context, 1.0, 0.0, 0.0, 1.0);
CGContextFillRect(context, rectangle);
答案 0 :(得分:43)
您无法在viewController中执行此操作。 您需要扩展View并在“drawRect:”
下添加代码这将改变视图的绘图逻辑。
-(void) drawRect:(CGRect)rect{
[super drawRect:rect];
CGRect rectangle = CGRectMake(0, 100, 320, 100);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetRGBFillColor(context, 1.0, 0.0, 0.0, 1.0);
CGContextSetRGBStrokeColor(context, 1.0, 0.0, 0.0, 1.0);
CGContextFillRect(context, rectangle);
}
答案 1 :(得分:3)
您无法直接在viewDidLoad中渲染;这是视图本身必须在他们的drawRect方法中运行它。
“绘制”矩形的最简单方法是放置一个带有背景颜色的UIView。在你的视图中的边框。 (您可以通过视图的CALayer方法设置边框。即myView.layer.borderColor = [[UIColor redColor] CGColor];
)
答案 2 :(得分:3)
为了清楚起见:
如果您需要绘制具有相同填充和边框颜色的矩形,则可以替换:
CGContextSetRGBFillColor(context, 1.0, 0.0, 0.0, 1.0);
CGContextSetRGBStrokeColor(context, 1.0, 0.0, 0.0, 1.0);
使用:
[[UIColor redColor] set];
答案 3 :(得分:2)
override func draw(_ rect: CGRect) {
let r = CGRect(x: 5, y: 5, width: 10, height: 10)
UIColor.yellow.set()
UIRectFill(r)
}
是的。