gpt4 book ai didi

ios - 三角形 UIView - Swift

转载 作者:IT王子 更新时间:2023-10-29 05:06:57 28 4
gpt4 key购买 nike

所以我正在制作一个游戏,其中我正在丢弃必须由用户在屏幕底部用尖刺(三角形)销毁的对象。

我不知道如何制作一个三角形的 UIView。但是我已经能够让它像这样像一个矩形一样工作:

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

这很奏效。但是我不知道如何制作三角形。我想要它作为 UIView 的原因是因为我在它上面使用了碰撞并让用户移动它。我已经尝试了一个 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()
}
}


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), 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 中

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.
}
}

但是,这会导致同样的问题,因为这个 View 的框架仍然是一个矩形。 UIKit 适用于矩形,您将不得不使用其他框架,例如 Sprite Kit。

关于ios - 三角形 UIView - Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30650343/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com