如何在UIView中绘制像ios5这样的角落抓取指示器?

时间:2011-12-21 03:34:34

标签: iphone objective-c ios4

我不知道如何在drawRect方法中绘制角点抓取指示器。这是mycode:

- (void)drawRect:(CGRect)rect{
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetStrokeColorWithColor(context, [UIColor whiteColor].CGColor);
CGContextSetLineWidth(context, 0.8f);

CGFloat colX1 = CGRectGetMaxX(rect)/3.0;
CGFloat colX2 = 2*colX1;
CGFloat rowY1 = CGRectGetMaxY(rect)/3.0;
CGFloat rowY2 = 2*rowY1;

CGContextBeginPath(context);
CGContextMoveToPoint(context, colX1, CGRectGetMinY(rect));  
CGContextAddLineToPoint(context, colX1, CGRectGetMaxY(rect));

CGContextMoveToPoint(context, colX2, CGRectGetMinY(rect));
CGContextAddLineToPoint(context, colX2, CGRectGetMaxY(rect));

CGContextMoveToPoint(context, CGRectGetMinX(rect),rowY1);
CGContextAddLineToPoint(context, CGRectGetMaxX(rect),rowY1);

CGContextMoveToPoint(context, CGRectGetMinX(rect),rowY2);
CGContextAddLineToPoint(context,CGRectGetMaxX(rect),rowY2);

CGContextStrokePath(context);}

并在init方法中:

 CATiledLayer *tiledLayer = (CATiledLayer *)[self layer];
    tiledLayer.levelsOfDetail = 4;
    self.layer.borderColor = [UIColor whiteColor].CGColor;
    self.layer.borderWidth = 1.5;

我的截图是: myCropView

我想知道如何绘制我的视图: enter image description here

我真的很想知道绘制角落抓取指标的代码。

提前致谢!

2 个答案:

答案 0 :(得分:3)

角落只是8个额外的线条,只是绘制在您正在绘制的框的外部。将您的盒子稍微插入并在框架的角落处绘制它们。在这种情况下,您需要绘制外部框而不是使用borderWidth。但这只是CGContextMoveToPoint / CGContextAddLineToPoint次呼叫。您似乎已经了解了所需的所有工具。

编辑顺便说一句,如果仔细查看发布的图片,您会注意到边框实际上是由黑白像素构成的。他们可能已绘制宽度为2的白色边框,然后返回并沿边缘绘制4条黑色线条。这可能更容易画出来。

答案 1 :(得分:0)

您可以通过一个技巧绘制这种类型 - 设计一个与第二个屏幕截图相同的图像。用这个图像创建一个图层并放在上面。

这个很简单,我认为。