简单的iOS图层子类不能正确定位

时间:2011-06-06 00:05:25

标签: ios calayer uibezierpath

当我运行此东西时出现的是a little off on positioning。它是一个简单的CALayer子类,带有drawInContext函数并将其定位在视图控制器中。

当我创建图层并添加它时,它在控制器代码中使用此代码完成。这会运行,因此会创建图层。 但是这个位置不正确。它似乎在肖像方面效果更好,但我也需要检测旋转的方法(但这不是我立刻想到的)。

- (void)viewDidLoad
{
    [super viewDidLoad];

    Canvas *c = [Canvas layer];

    self.canvas = c;
    [self.view.layer addSublayer: self.canvas];
    //c.frame = self.view.bounds;
    self.canvas.anchorPoint = CGPointMake(0, 0);
    self.canvas.position = CGPointMake(0, 0);
    self.canvas.bounds = CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height);


    self.canvas.backgroundColor = [UIColor lightGrayColor].CGColor;

    [self.canvas setNeedsDisplay];


}

主要问题似乎是在实际绘图中,代码如下,但即使调用needsDisplay也不会实际运行。

- (void)drawInContext:(CGContextRef)ctx {
    [super drawInContext: ctx];

    CGContextSaveGState(ctx);
    UIGraphicsPushContext(ctx);

//    CGRect b = self.bounds;

    [self drawOrigin];

    UIGraphicsPopContext();
    CGContextRestoreGState(ctx);

}

- (void) drawOrigin {


    CGPoint centre = CGPointMake(self.bounds.size.width / 2, self.bounds.size.height / 2);

    UIBezierPath *hl = [UIBezierPath bezierPath];
    [hl moveToPoint: centre];
    [hl addLineToPoint: CGPointMake(centre.x, 0)];

    [hl moveToPoint: centre];
    [hl addLineToPoint: CGPointMake(centre.x, self.bounds.size.height)];

    [hl moveToPoint: centre];
    [hl addLineToPoint: CGPointMake(0, centre.y)];

    [hl moveToPoint: centre];
    [hl addLineToPoint: CGPointMake(self.bounds.size.width, centre.y)];

    [hl stroke];
}

我不知道在哪里可以查找此代码。欢迎提出任何想法或指示。

0 个答案:

没有答案