当前位置: 首页 > 面试题库 >

三角UIView-Swift

诸经略
2023-03-14
问题内容

因此,我正在制作一个游戏,其中我丢弃了必须由用户在屏幕底部的尖峰(三角形)破坏的对象。

我不知道如何制作一个三角形的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, nil, 100, 50), CGPathAddLineToPoint(path, nil, 0, 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()
    }
}

斯威夫特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), CGRectGetMaxY(rect))
        CGContextAddLineToPoint(ctx, (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,0,Alpha 0.6然后将使用设置的颜色填充您刚才在上面绘制的路径。

然后在您的View Controller中

迅捷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()
    }
}

斯威夫特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。



 类似资料:
  • 问题内容: 我在用Java中的方法绘制三角形时遇到麻烦。我可以这样画一个矩形: 其中p代表“形状的左上角”。我将如何以相同的方式绘制三角形? 有人可以给我一个标准三角形的例子吗? 问题答案: 在Graphics和Graphics2D中都没有drawTriangle方法。您需要自己做。您可以使用方法绘制三行或使用以下方法之一: drawPolygon(INT [] xPoints,INT [] yp

  • 杨辉三角 杨辉,字谦光,汉族,钱塘(今浙江省杭州)人,南宋杰出的数学家。 他曾担任过南宋地方行政官员,为政清廉,足迹遍及苏杭一带。他在总结民间乘除捷算法、“垛积术”、纵横图(幻方)以及数学教育方面,均做出了重大的贡献。他是世界上第一个排出丰富的纵横图和讨论其构成规律的数学家。还曾论证过弧矢公式,时人称为“辉术”。与秦九韶、李冶、朱世杰并称“宋元数学四大家”。主要著有数学著作5种21卷,即《详解九章

  • 一个三角形由三个表示其三个角的Vector3所定义。 构造函数 Triangle( a : Vector3, b : Vector3, c : Vector3 ) a - 三角形的第一个角,默认值是一个在(0, 0, 0)处的Vector3。 b - 三角形的第二个角,默认值是一个在(0, 0, 0)处的Vector3。 c - 三角形的第三个角(最后一个角),默认值是一个在(0, 0, 0)处的

  • 问题内容: 我想尝试一个直角三角形的星号。但是我只得到以下 输出:( 我不能在这里放置星号) 我想要的是这样的: 这是我编写的代码: 任何想法分享,我们将不胜感激。我是Java新手。谢谢。 问题答案: 您的代码从不打印任何空格,这应该是一个问题。 您可以使用以下简单方法: 逻辑很简单:您的字符串带有两个空格和三个at符号。输出的第一行必须是两个空格和一个at符号,因此这是字符串的前三个字符。第二行

  • 在本节中,我们将通过简单的示例学习如何创建一个三维三角形。我们还将旋转这个三角形以查看它的所有边。 输出结果为:

  • 本文向大家介绍CSS画三角形?相关面试题,主要包含被问及CSS画三角形?时的应答技巧和注意事项,需要的朋友参考一下