我有一个基于视图控制器的应用程序,它包含我根据某些逻辑显示/隐藏的几个视图。我想绘制一个UIView大小的矩形,以便像框架/边框形状一样。
我遇到绘制矩形的问题。我知道以下代码应该这样做,但我不确定为什么不调用或触发此方法。我也没有看到(void)drawRect:(CGRect)rect方法在任何地方生成,所以我自己放置它。不知道我在这里缺少什么..
- (void)drawRect:(CGRect)rect;
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetRGBStrokeColor(context, 1.0, 1.0, 0.0, 1.0); // yellow line
CGContextBeginPath(context);
CGContextMoveToPoint(context, 50.0, 50.0); //start point
CGContextAddLineToPoint(context, 250.0, 100.0);
CGContextAddLineToPoint(context, 250.0, 350.0);
CGContextAddLineToPoint(context, 50.0, 350.0); // end path
CGContextClosePath(context); // close path
CGContextSetLineWidth(context, 8.0); // this is set from now on until you explicitly change it
CGContextStrokePath(context); // do actual stroking
CGContextSetRGBFillColor(context, 0.0, 1.0, 0.0, 0.5); // green color, half transparent
CGContextFillRect(context, CGRectMake(20.0, 250.0, 128.0, 128.0)); // a square at the bottom left-hand corner
}
答案 0 :(得分:2)
如果您只需要添加一个简单的矩形边框,只需在viewWillAppear:
中为视图控制器执行以下操作即可。
- (void) viewWillAppear:(BOOL)animated
{
//Simple border on the main view
self.view.layer.borderColor = [UIColor redColor].CGColor;
self.view.layer.borderWidth = 2;
//Or a simple rectangle to place at x,h within the main view
UIView *test = [[UIView alloc] initWithFrame:CGRectMake(x, y, width, height)];
test.backgroundColor = [UIColor redColor];
[self.view addSubview:test];
}
希望这有帮助!
答案 1 :(得分:0)
猜猜,但是你告诉UIView
重新显示自己吗?
[myUIView setNeedsDisplay];
只有这样才能调用drawRect:
。
答案 2 :(得分:0)
首先创建一个类(YourView
),它是UIView
的子类。您在viewController中实现代码。
- (void)viewDidLoad
{
YourView *temp = [[YourView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
[self.view addSubview:temp];
}
您在- (void)drawRect:(CGRect)rect
文件中编写方法(YourView.m
)。
试试这样吧。我认为这对你有帮助。