私は六角形に基づいて簡単なゲームを作っています。私はまさに私がCAShapeLayer
sとそれらを望むように六角形を描くことができた形のUIButtonを作成するCAShapeLayer
が、私は彼らがクリッカブルしたいのです:ここでは次のようになります。要するに、私はそれらを何とかUIButtons
にキャストしたいので、どれがtouchUpInsideで選択されたかを調べることができます。私がそれをやっていると考えることができるもう一つの方法は、軌道に触れ、それらがタグ付きの形になっているかどうかをチェックすることですが、複雑になるようです。以下は私のコードです:
let screenSize: CGRect = UIScreen.mainScreen().bounds
let screenWidth = screenSize.width
let screenHeight = screenSize.height
let radius : CGFloat = screenWidth/6
var c = 0
var counter = 0
for j in 1...6 {
for i in 1...3 {
for x in 1...2 {
var center = CGPoint(x: CGFloat((i-1)*2)*radius+CGFloat(i-1)*radius, y: CGFloat((j-1)*2)*radius)
if (x==2) {
center.x = center.x+1.5*radius
center.y = center.y+radius
}
let shape = CAShapeLayer()
view.layer.addSublayer(shape)
shape.opacity = 0.5
shape.lineWidth = 2
shape.lineJoin = kCALineJoinMiter
shape.strokeColor = UIColor(hue: 0.786, saturation: 0.79, brightness: 0.53, alpha: 1.0).CGColor
shape.fillColor = UIColor(hue: 0.786, saturation: 0.15, brightness: 0.89, alpha: 1.0).CGColor
let path = UIBezierPath()
path.moveToPoint(CGPointMake(center.x-radius, center.y))
path.addLineToPoint(CGPointMake(center.x-radius/2, center.y-radius))
path.addLineToPoint(CGPointMake(center.x+radius/2, center.y-radius))
path.addLineToPoint(CGPointMake(center.x+radius, center.y))
path.addLineToPoint(CGPointMake(center.x+radius, center.y))
path.addLineToPoint(CGPointMake(center.x+radius/2, center.y+radius))
path.addLineToPoint(CGPointMake(center.x-radius/2, center.y+radius))
path.closePath()
shape.path = path.CGPath
}
}
}
お返事ありがとうございます!それは理にかなっている。シェイプレイヤーを使ってUIButtonを設定する方法はありますか?私はどのように六角形のUIButtonを作るつもりですか? – Antoine
サンプルコードが追加されました。 – matt