ios – 三角形UIView – Swift

前端之家收集整理的这篇文章主要介绍了ios – 三角形UIView – Swift前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我正在制作一个游戏,在这个游戏中,我将丢弃必须由用户在屏幕底部的尖峰(三角形)破坏的对象.

我无法弄清楚如何制作一个三角形的UIView.但是,我已经能够像这样的矩形工作:

let barrier = UIView(frame: CGRect(x:125,y: 650,width: 130,height:20))
 barrier.backgroundColor = UIColor.orangeColor()
 view.addSubview(barrier)

这一切都奏效了但是我不能弄清楚如何制作三角形.我想要它作为UIView的原因是因为im使用碰撞并使用户移动它.我尝试了一个PNG三角形,但它检测到碰撞作为图像的边框不是三角形的开始.

我已经尝试过了,但它不工作…

let square = UIView(frame: CGPathMoveToPoint(path,nil,50,0),CGPathAddLineToPoint(path,100,50),100))
 square.backgroundColor = UIColor.purpleColor()
 view.addSubview(square)

任何和所有的帮助将不胜感激,

谢谢,

亚历克斯

解决方法

更新为Swift 3:
class TriangleView : UIView {

    override init(frame: CGRect) {
        super.init(frame: frame)
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }

    override func draw(_ rect: CGRect) {

        guard let context = UIGraphicsGetCurrentContext() else { return }

        context.beginPath()
        context.move(to: CGPoint(x: rect.minX,y: rect.maxY))
        context.addLine(to: CGPoint(x: rect.maxX,y: rect.maxY))
        context.addLine(to: CGPoint(x: (rect.maxX / 2.0),y: rect.minY))
        context.closePath()

        context.setFillColor(red: 1.0,green: 0.5,blue: 0.0,alpha: 0.60)
        context.fillPath()
    }
}

Swift 2:

import UIKit

class TriangleView : UIView {

    override init(frame: CGRect) {
        super.init(frame: frame)
    }

    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }

    override func drawRect(rect: CGRect) {

        var ctx : CGContextRef = UIGraphicsGetCurrentContext()

        CGContextBeginPath(ctx)
        CGContextMoveToPoint(ctx,CGRectGetMinX(rect),CGRectGetMaxY(rect))
        CGContextAddLineToPoint(ctx,CGRectGetMaxX(rect),(CGRectGetMaxX(rect)/2.0),CGRectGetMinY(rect))
        CGContextClosePath(ctx)

        CGContextSetRGBFillColor(ctx,1.0,0.5,0.0,0.60);
        CGContextFillPath(ctx);
       }
 }

这将从MinX,MaxY开始;
从一开始画一条线到MaxX,MaxY;
从MaxX,MaxY到MaxX / 2,MinY;
然后关闭到起始位置的路径.

下一部分设置要使用的颜色.在这个例子中,255,127,Alpha 0.6
然后将用设置的颜色填充您刚刚绘制的路径.

然后在您的View Controller中

Swift 3:

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let triangle = TriangleView(frame: CGRect(x: 10,y: 20,width: 25,height: 30))
        triangle.backgroundColor = .white
        view.addSubview(triangle)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

Swift 2:

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view,typically from a nib.

        let triangle = TriangleView(frame: CGRectMake(10,20,25,30))
        triangle.backgroundColor = .whiteColor()
        view.addSubview(triangle)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}

然而,这将导致同样的问题,因为这个视图的框架仍然是一个矩形. UIKit使用矩形,您将不得不使用另一个框架,如Sprite Kit.

原文链接:https://www.f2er.com/iOS/329545.html

猜你在找的iOS相关文章