Как нарисовать прямоугольник?

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

Ответы

Ответ 1

Вы не можете сделать это в viewController. Вам нужно расширить свой вид и добавить код под "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);
}

Ответ 2

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

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

Ответ 3

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

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

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

с:

 [[UIColor redColor] set];

Ответ 4

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

override func draw(_ rect: CGRect) {

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

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

это.