ios – 三角形UIView – Swift

ios – 三角形UIView – Swift,第1张

概述所以我正在制作一个游戏,在这个游戏中,我将丢弃必须由用户在屏幕底部的尖峰(三角形)破坏的对象. 我无法弄清楚如何制作一个三角形的UIView.但是,我已经能够像这样的矩形工作: let barrier = UIView(frame: CGRect(x:125, y: 650, width: 130, height:20)) barrier.backgroundColor = UIColor.or 所以我正在制作一个游戏,在这个游戏中,我将丢弃必须由用户在屏幕底部的尖峰(三角形)破坏的对象.

我无法弄清楚如何制作一个三角形的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 UIKitclass 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.

总结

以上是内存溢出为你收集整理的ios – 三角形UIView – Swift全部内容,希望文章能够帮你解决ios – 三角形UIView – Swift所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1096141.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存