swift 直線の一部がなぜがグレーになる
解決済
回答 1
投稿
- 評価
- クリップ 0
- VIEW 988
swift言語でiOSアプリ開発を行っています。立ち位置のアプリを作成したく、以下のように画面上にマス目を引いてラベルを一つ作りました。マス目に関しては、全て黒い線を指定しているはずですが、なぜが特定の直線だけグレーっぽい色をしています。全て黒色にしたいです。アドバイスよろしくお願いいたします。
import UIKit
class ViewController: UIViewController {
var label:UILabel! //labelの型が無を含んだUILabelクラスであることを示す(オプショナル型)なんで無がいるの?//型を明示的に指定するvar<変数名>:<型> //型はクラスにもなる、?
var myLabel: UILabel!
var turn = 1 //初期値1の変数turn
override func viewDidLoad() {//親クラスを編集することなく、子クラスの中で親クラスのメソッドを上書きできる
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let (screenWidth, screenHeight) = (self.view.bounds.width, self.view.bounds.height)
let (width, height) = (screenWidth/16, screenHeight/7) //1マスあたりの幅と高さを指定
for i in 0 ..< 16{
for j in 0 ..< 7{ //jが縦、iが横(ただし、デバイスを立てで見たとき)
let label1 = UILabel(frame: CGRectMake(width*CGFloat(i),height*CGFloat(j+1),width,height)) //jだけにすると、最上段の空白がなくなる(番号をつけたいので空白で良い)
label1.layer.borderColor = UIColor.black.cgColor //線の色を指定するプロパティ
label1.layer.borderWidth = 1.0 //線幅を指定するプロパティ
}
}
//self.label = UILabel(frame: CGRectMake(0,0,screenWidth,height)) //コメントアウトしたら画面に何も表示されなくなったから重要っぽい
//self.view.addSubview(self.label!) //コメントアウトしたら画面に何も表示されなくなったから重要っぽい
print("マス目がViewに追加されました")
//self.update() //よくわかんないけどコメント外すとエラーになる
// Labelを生成.
myLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 80, height: 80))
myLabel.text = "1"
myLabel.textAlignment = NSTextAlignment.center
myLabel.backgroundColor = UIColor.red
myLabel.layer.masksToBounds = true
myLabel.center = self.view.center
myLabel.layer.cornerRadius = 40.0
// Labelをviewに追加.
self.view.addSubview(myLabel)
print("駒がViewに追加されました")
}
func CGRectMake(_ x: CGFloat, _ y: CGFloat, _ width: CGFloat, _ height: CGFloat) -> CGRect{
return CGRect(x:x,y:y,width:width,height:height)
}
/*
タッチを感知した際に呼ばれるメソッド.
*/
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
//print("touchesBegan")
print("touchesBeganが呼ばれました")
// Labelアニメーション.
UIView.animate(withDuration: 0.06,
// アニメーション中の処理.
animations: { () -> Void in
// 縮小用アフィン行列を作成する.
self.myLabel.transform = CGAffineTransform(scaleX: 0.9, y: 0.9)
})
{ (Bool) -> Void in
}
}
/*
ドラッグを感知した際に呼ばれるメソッド.
(ドラッグ中何度も呼ばれる)
*/
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
print("touchesMovedが呼ばれました")
// タッチイベントを取得.
let aTouch: UITouch = touches.first!
// 移動した先の座標を取得.
let location = aTouch.location(in: myLabel/*self.view*/)
// 移動する前の座標を取得.
let prevLocation = aTouch.previousLocation(in: myLabel/*self.view*/)
// CGRect生成.
var myFrame: CGRect = myLabel/*self.view*/.frame
// ドラッグで移動したx, y距離をとる.
let deltaX: CGFloat = location.x - prevLocation.x
let deltaY: CGFloat = location.y - prevLocation.y
// 移動した分の距離をmyFrameの座標にプラスする.
myFrame.origin.x += deltaX
myFrame.origin.y += deltaY
// frameにmyFrameを追加.
myLabel/*self.view*/.frame = myFrame
}
/*
指が離れたことを感知した際に呼ばれるメソッド.
*/
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
print("touchesEndedが呼ばれました")
// Labelアニメーション.
UIView.animate(withDuration: 0.1,
// アニメーション中の処理.
animations: { () -> Void in
// 拡大用アフィン行列を作成する.
self.myLabel.transform = CGAffineTransform(scaleX: 0.4, y: 0.4)
// 縮小用アフィン行列を作成する.
self.myLabel.transform = CGAffineTransform(scaleX: 1.0, y: 1.0)
})
{ (Bool) -> Void in
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.10%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる