UIView弯曲边缘(不是角半径)

时间:2015-10-28 09:49:48

标签: ios objective-c xcode uiview

我正在试图塑造一个UIView,其底边曲线向内,如图所示。

enter image description here

我试图用一些简单的东西来完成它,比如一个负值的角半径,但显然这是行不通的。似乎需要使用贝塞尔曲线?完成这项工作的最简单方法是什么?

2 个答案:

答案 0 :(得分:0)

您可以使用CAShapeLayer作为UIView的子图层或支持图层。 CAShapeLayer允许您设置路径,笔触,填充等。

答案 1 :(得分:0)

// To draw an arc path

func drawCircle(view: UIView, startingAngle: CGFloat, endAngle: CGFloat) -> CAShapeLayer {
    let path = UIBezierPath(arcCenter: CGPoint(x:arcViewOutlet.frame.size.width/2,y:400), radius: CGFloat((400)), startAngle: startingAngle, endAngle:endAngle, clockwise: true)

    let shapeLayer = CAShapeLayer()
    shapeLayer.path = path.cgPath

    shapeLayer.strokeColor = UIColor.clear.cgColor
    shapeLayer.fillColor = UIColor.white.cgColor
    shapeLayer.lineCap = kCALineCapRound

    view.layer.addSublayer(shapeLayer)

    return shapeLayer
}

根据我的要求,我使用的半径为400。

给arcCentres如下。

CGPoint(x:arcViewOutlet.frame.size.width/2,y:400) //for top edge curve 
CGPoint(x:arcViewOutlet.frame.size.width/2,y:-400) //for bottom edge curve 
CGPoint(x:400,y:arcViewOutlet.frame.size.height/2) //for left edge curve 
CGPoint(x:-400,y:arcViewOutlet.frame.size.height/2) //for right edge curve
相关问题