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

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

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

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

Swift

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

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

Q&A

解決済

2回答

10330閲覧

ImageViewを最前面に固定

lyzmfeqpxs54

総合スコア237

iOS

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

Swift

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

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

0グッド

0クリップ

投稿2016/06/18 02:06

swiftのコーディングに関する質問です。
タイトル通りですがself.view.addSubviewで追加したImageViewを最前面に固定するには、どのようにしたらよいでしょうか。

その後self.view.addSubviewで追加したImageViewが固定したImageViewの裏に入るようにしたいのです。

よろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

self.viewの上に、透明view、最前面ImageView、の順にaddします。
そして、後から追加するImageViewは透明viewにaddするようにすれば優先を保つことが出来ます。

self.view | +-- 透明view | | | +-- ImageView1 | | | +-- ImageView2 | +-- 最前面ImageView

投稿2016/06/19 23:46

fuzzball

総合スコア16731

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

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

lyzmfeqpxs54

2016/06/21 03:43

ご回答ありがとうございます!こういった方法もあるのですね。勉強になります。 この方法も試して見たいと思います!
guest

0

ベストアンサー

UIViewクラスのinsertSubview(view: UIView, belowSubview siblingSubview: UIView)メソッドを使用するとTopImageViewの下に後で追加したViewが挿入されます。
※ 固定されるのでは無くその下に挿入されていく感じですね。

swift

1class ViewController: UIViewController { 2 3 var topImageView = UIImageView() 4 5 override func viewDidLoad() { 6 super.viewDidLoad() 7 8 topImageView.frame = CGRect(x: 100, y: 100, width: 100, height: 100) 9 topImageView.image = UIImage(named: "ImageName") 10 topImageView.backgroundColor = UIColor.yellowColor() 11 view.addSubview(topImageView) 12 13 let color: [UIColor] = [.greenColor(), .redColor(), .blueColor(), .orangeColor(), .grayColor()] 14 15 for i in 0..<5 { 16 let imageV = UIImageView() 17 imageV.frame = CGRect(x: 30 * i, y: 30 * i, width: 200, height: 200) 18 imageV.backgroundColor = color[i] 19 view.insertSubview(imageV, belowSubview: topImageView) 20 } 21 } 22}

実行すると黄色いTopImageViewの下に追加されています。

image

もう一つの案としてはbringSubviewToFront(view: UIView)メソッドを使用して指定したViewのTopに配置し直すというやり方です。
※全てのviewを乗せた後に呼び出すとTopに配置されます。

swift

1import UIKit 2 3class ViewController: UIViewController { 4 5 var topImageView = UIImageView() 6 7 override func viewDidLoad() { 8 super.viewDidLoad() 9 10 topImageView.frame = CGRect(x: 100, y: 100, width: 100, height: 100) 11 topImageView.image = UIImage(named: "ImageName") 12 topImageView.backgroundColor = UIColor.yellowColor() 13 view.addSubview(topImageView) 14 15 let color: [UIColor] = [.greenColor(), .redColor(), .blueColor(), .orangeColor(), .grayColor()] 16 17 for i in 0..<5 { 18 let imageV = UIImageView() 19 imageV.frame = CGRect(x: 30 * i, y: 30 * i, width: 200, height: 200) 20 imageV.backgroundColor = color[i] 21 view.addSubview(imageV) 22 } 23 24 view.bringSubviewToFront(topImageView) 25 } 26}

投稿2016/06/18 02:36

編集2016/06/18 02:42
_Kentarou

総合スコア8490

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

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

lyzmfeqpxs54

2016/06/18 04:10

ありがとうございます!無事解決いたました! 指定したViewの下に入れるか、都度最前面にしたいものをViewするしかないのですね・・・。度々の質問で恐縮ですがImageViewを最前面に固定する制約はないという解釈でよろしいでしょうか。
_Kentarou

2016/06/18 04:35

UIWindowに乗せるとか抜きにすれば、ないと思います。
lyzmfeqpxs54

2016/06/19 01:45

やはりないのですか・・・。ご回答ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問