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