質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

0回答

1431閲覧

画面タップで画像表示

nanshime_2621

総合スコア32

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2017/03/16 05:34

編集2017/03/16 08:01

swift3で星マークが5つ並んだレーティングの値を変更するコードを作成しています。
デフォルトは白抜きの星が5つ表示されている状態で、いずれかの星をタップすると、左からタップした星までが黒抜きの星に変更されるという内容です。
再度同じ星をタップすると、デフォルトに戻ります。

UIViewのカスタムクラスで、draw関数をオーバーライドして、その中に白抜きの星が5つ表示されているコードを書いて実際に表示されている状態です。

touchesBegan関数をオーバーライドして、画面をタップしたら画像を表示するコードのところで、タップした位置の座標は取れているのですが、画像表示ができません。
ご教授願います。

swift import UIKit @IBDesignable class MPPRatingButton: UIView { //Viewのデフォルト位置 var origin: CGPoint = CGPoint(x: 0, y: 0) //黒抜きの星 let fullStar = UIImage(named: "fullStar") //白抜きの星 let emptyStar = UIImage(named: "emptyStar") //星の間のパディング var padding = 4 //星の数 var numOfStar = 5 //星の状態(デフォルトを白抜きとする) var rateStatus : Bool = false /// 初期化 init() { super.init(frame: CGRect(x: 0, y: 0, width: (emptyStar?.size.width)! * 5 + CGFloat(padding) * CGFloat(numOfStar + 1), height: (emptyStar?.size.height)!)) } required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } override func draw(_ rect: CGRect) { for i in 0..<5 { var paddingNo = CGFloat(padding * (i + 1)) var emptyStarNum = (emptyStar?.size.width)! * CGFloat(i) var pointOfStar = paddingNo + emptyStarNum emptyStar?.draw(at: CGPoint(x: pointOfStar, y: 0)) } } override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { //タップした座標の取得 let touch : UITouch = touches.first! as UITouch let location : CGPoint = touch.location(in: self) //とりあえず仮の位置に表示 //if(0 < location.x){ // fullStar?.draw(at: CGPoint(x: 0, y: 0)) //setNeedsDisplay() } } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fuzzball

2017/03/16 06:17

コードは ``` で囲って下さい。
fuzzball

2017/03/16 07:45

自分で質問見て何かおかしいと思わないのかね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問