在屏幕中间画一个方形边框

时间:2012-10-23 17:44:37

标签: objective-c ios

我试图在视图中间绘制一个透明的正方形(仅限边框),但我很难找到方法。我想我有两个问题,第一个是绘制一个带黑色边框的透明方块,第二个是将它放在视图中间。

有没有好的教程要遵循?

更新

我试过关注Apple教程,我有一段代码在视图控制器中绘制一个矩形:

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetLineWidth(context, 2.0);
    CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor);
    CGRect rectangle = CGRectMake(60,170,200,80);
    CGContextAddRect(context, rectangle);
    CGContextStrokePath(context);

但我无法找到如何将其添加到特定视图或视图中心。

2 个答案:

答案 0 :(得分:4)

您提供的绘图代码需要放在其drawRect方法的自定义UIView子类中。

但如果您只是想在屏幕上的某个位置显示一个矩形,那么只需添加所需大小的子视图并相应地设置其图层属性就更容易了:

#import <QuartzCore/QuartzCore.h>
//...
UIView *rectView = [[UIView alloc] initWithFrame:CGRectMake(60,170,200,80)];
rectView.backgroundColor = [UIColor clearColor];
rectView.layer.borderColor = [[UIColor blueColor] CGColor];
rectView.layer.borderWidth = 2.0;
[someView addSubview:rectView];

答案 1 :(得分:2)

我认为您可能想要对UIView进行子类化并覆盖其drawRect:

- (void)drawRect:(CGRect)rect

请务必致电:

[super drawRect:rect];

然后,您希望在绘图代码中使用相对于您正在绘制的视图大小的坐标。

所以你得到的更像是:

- (void)drawRect:(CGRect)rect
{
    [super drawRect:rect];

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetLineWidth(context, 2.0);
    CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor);
    CGFloat width = 200;
    CGFloat height = 80;
    CGFloat x = (self.frame.size.width - width) * 0.5f;
    CGFloat y = (self.frame.size.height - height) * 0.5f;
    CGRect rectangle = CGRectMake(x, y, width, height);
    CGContextAddRect(context, rectangle);
    CGContextStrokePath(context);
}