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

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

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

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

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

Q&A

解決済

1回答

2500閲覧

UISliderの現在位置(value)の座標(CGrect)を取得したい

techiro

総合スコア10

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

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

0グッド

0クリップ

投稿2020/06/20 04:51

編集2020/06/20 05:21

前提・実現したいこと

現在、Sliderの現在位置(Slder.value)を取得して,そこから何かしらの文字列を表示させたいと思っています。

イメージ説明

##解決したいこと
Sliderのvalueの座標(CGRect)を取得したい。

##テストプログラム

swift

1 2import UIKit 3import PlaygroundSupport 4 5var view = UIView(frame: CGRect(x: 0, y: 0, width: 207, height: 448)) 6let slider_width = 200 7let slider_height = 30 8let slider1 = UISlider(frame: CGRect(x: 0, y: 0, width: slider_width, height: slider_height)) 9slider1.center = view.center 10slider1.maximumValue = 100 11slider1.minimumValue = 0 12slider1.value = 30 13//Sliderのvalueの座標(CGRect)を取得したい 14view.addSubview(slider1) 15PlaygroundPage.current.liveView = view 16PlaygroundPage.current.needsIndefiniteExecution = true 17

試したこと

UISliderのドキュメントを読んで、

  • thumbRect(forBounds:trackRect:value:)
  • trackRect(forBounds:)

あたりのメソッドがあるので,なんとなくいけそうと思って色々試してみた結果路頭に迷っている状況になりました。
これらのメソッドは描画の値を自分で与えるメソッドだと思うので、
取得のメソッドもあるのではないかと思いましたが、調べても出てこなかったので、断念しました。

わかる方がいらっしゃいましたら、ご教授お願いいたします。

補足情報(FW/ツールのバージョンなど)

Playgroundでテストプログラムを動かしています。

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

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

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

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

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

guest

回答1

0

ベストアンサー

これで。

swift

1@IBOutlet weak var slider: UISlider! 2 3@IBAction func valueChanged(_ sender: Any) { 4 5 for i in slider.subviews { 6 if i is UIImageView { 7 let point = self.view.convert(i.center, from: slider) 8 print(point) 9 print(self.view.center.x) 10 } 11 } 12}

投稿2020/06/20 05:16

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

techiro

2020/06/20 06:12 編集

回答ありがとうございます。 convertを用いると親Viewからの子View内の部品の絶対位置を取得することができることがわかりました。ありがとうございます。 現在viewから見てSliderのcenterの位置を取得できているのですが、 Sliderのvalueの位置はどのようにして取得したら良いのでしょうか? 恐縮ですが、回答よろしくお願いします。 また、自分なりにプログラムを解釈して書いてみました。 ```swift @IBOutlet weak var SeekSlider: UISlider! @IBAction func valueChanged(_ sender: Any) { for i in view.subviews { if i is UISlider { let point = self.view.convert(i.center, from: SeekSlider) //スライダーの現在位置の座標を取得したい。 print(point) print(self.view.center.x) }}} ```
退会済みユーザー

退会済みユーザー

2020/06/20 06:22

スライダーのポッチの相対的な座標がほしいと解釈したのですが、 通常のスライダーの使い方がわからないってことかな? あなたの言う座標ってなんですか?
techiro

2020/06/20 07:25

tyobigorouさんの回答してくれた方法で解決できました。 完全に私の認識が間違っていて、勝手にプログラムを書き換えてしまったのが原因でした。 for i in slider.subviews { この処理の意味がわかっていなかったので勝手にプログラムを書き換えてしまいました。 本来 親 view→slider→slider.subviews →UIImageView(ポッチ) 私の頭の中 親view→Slider の階層でポッチの値が操作されていると勘違いしていました。 迅速な回答ありがとうございました。無事解決できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問