如何在iPhone中的UIView中间创建锋利的边缘

时间:2013-06-04 05:43:58

标签: ios objective-c

我有多张图片。当用户选择特定图像时,我必须使用顶部有箭头的视图突出显示该图像。它将简单地通过使用顶部具有锐箭头边缘的图像来解决,但我想使用uiview来实现。 如何使用iPhone中的核心图形在UIView的顶部中间创建一个清晰的箭头边缘。就像iPad中的popover sharp arrow edge。

任何人都可以帮助我。 提前谢谢。

4 个答案:

答案 0 :(得分:10)

是的,您可以使用UIView来完成此操作。使用UIBezierPath

创建所需的路径

然后将路径添加到图形上下文并填充它将为您想要的颜色。

示例代码如下所示:

#define kArrowHeight 50   

- (void)drawRect:(CGRect)rect
{
    CGContextRef context = UIGraphicsGetCurrentContext();

    UIBezierPath *fillPath = [UIBezierPath bezierPath];
    [fillPath moveToPoint:CGPointMake(0, self.bounds.origin.y+kArrowHeight)];
    [fillPath addLineToPoint:CGPointMake(self.bounds.size.width/2-(kArrowHeight/2), kArrowHeight)];
    [fillPath addLineToPoint:CGPointMake(self.bounds.size.width/2, 0)];
    [fillPath addLineToPoint:CGPointMake(self.bounds.size.width/2+(kArrowHeight/2), kArrowHeight)];
    [fillPath addLineToPoint:CGPointMake(self.bounds.size.width, kArrowHeight)];
    [fillPath addLineToPoint:CGPointMake(self.bounds.size.width, self.bounds.size.height)];
    [fillPath addLineToPoint:CGPointMake(0, self.bounds.size.height)];
    [fillPath closePath];

    CGContextAddPath(context, fillPath.CGPath);
    CGContextSetFillColorWithColor(context, [UIColor greenColor].CGColor);
    CGContextFillPath(context);

}

上面的代码将为您提供一个视图,其中包含UIView中间的尖锐边缘,看起来像popover,如下所示。

enter image description here

请注意:

  • 您可以根据自己的要求更改路径。
  • 视图的背景颜色应该是清晰的颜色。

答案 1 :(得分:2)

答案 2 :(得分:0)

如果它的iPad应用程序你可以使用uipopovercontroller。否则你可以在github上找到各种控件

答案 3 :(得分:0)

您可以使用UIView作为容器,并将UIView背景设置为透明。接下来,在容器中添加一个子UIView,在顶部边缘添加一个箭头(UIImageView)。