Как нарисовать прямоугольник? - PullRequest
15 голосов
/ 19 ноября 2011

Я хочу нарисовать заполненный прямоугольник в виде моего 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);

Ответы [ 4 ]

43 голосов
/ 19 ноября 2011

Вы не можете сделать это в 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);
}
3 голосов
/ 04 марта 2014

Просто для наглядности:

Если вам нужно нарисовать прямоугольник с таким же цветом заливки и границы, то вы можете заменить:

CGContextSetRGBFillColor(context, 1.0, 0.0, 0.0, 1.0);
CGContextSetRGBStrokeColor(context, 1.0, 0.0, 0.0, 1.0);

на:

 [[UIColor redColor] set];
3 голосов
/ 19 ноября 2011

Вы не можете визуализировать напрямую в viewDidLoad;это сами представления должны запускать это в их методе drawRect.

Самый простой способ «нарисовать» прямоугольник - это разместить UIView с цветом фона и рамкой в ​​вашем виде.(Вы можете установить границу с помощью методов представления CALayer. То есть myView.layer.borderColor = [[UIColor redColor] CGColor];)

2 голосов
/ 10 марта 2018

современное решение 2018 года.

override func draw(_ rect: CGRect) {

    let r = CGRect(x: 5, y: 5, width: 10, height: 10)

    UIColor.yellow.set()
    UIRectFill(r)
}

вот и все.

...