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

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

ただいまの
回答率

91.32%

  • Swift

    5087questions

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

  • iOS

    2974questions

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

  • Swift 2

    1300questions

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

ImageViewを最前面に固定

解決済

回答 2

投稿 2016/06/18 11:06

  • 評価
  • クリップ 0
  • VIEW 1,628

lyzmfeqpxs54

score 94

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

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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

+1

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

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

投稿 2016/06/20 08:46

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/06/21 12:43

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

    キャンセル

checkベストアンサー

0

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

class ViewController: UIViewController {

    var topImageView = UIImageView()

    override func viewDidLoad() {
        super.viewDidLoad()

        topImageView.frame = CGRect(x: 100, y: 100, width: 100, height: 100)
        topImageView.image = UIImage(named: "ImageName")
        topImageView.backgroundColor = UIColor.yellowColor()
        view.addSubview(topImageView)

        let color: [UIColor] = [.greenColor(), .redColor(), .blueColor(), .orangeColor(), .grayColor()]

        for i in 0..<5 {
            let imageV = UIImageView()
            imageV.frame = CGRect(x: 30 * i, y: 30 * i, width: 200, height: 200)
            imageV.backgroundColor = color[i]
            view.insertSubview(imageV, belowSubview: topImageView)
        }
    }
}

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

image

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

import UIKit

class ViewController: UIViewController {

    var topImageView = UIImageView()

    override func viewDidLoad() {
        super.viewDidLoad()

        topImageView.frame = CGRect(x: 100, y: 100, width: 100, height: 100)
        topImageView.image = UIImage(named: "ImageName")
        topImageView.backgroundColor = UIColor.yellowColor()
        view.addSubview(topImageView)

        let color: [UIColor] = [.greenColor(), .redColor(), .blueColor(), .orangeColor(), .grayColor()]

        for i in 0..<5 {
            let imageV = UIImageView()
            imageV.frame = CGRect(x: 30 * i, y: 30 * i, width: 200, height: 200)
            imageV.backgroundColor = color[i]
            view.addSubview(imageV)
        }

        view.bringSubviewToFront(topImageView)
    }
}

投稿 2016/06/18 11:36

編集 2016/06/18 11:42

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/06/18 13:10

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

    キャンセル

  • 2016/06/18 13:35

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

    キャンセル

  • 2016/06/19 10:45

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

    キャンセル

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

ただいまの回答率

91.32%

関連した質問

  • 解決済

    objective-C、iosアプリ開発を勉強中です。

    現在独学でobjective-cを勉強中です。 C言語は基本的なことは本を読んで勉強しました。 下記についてご質問です。 objective-cのメッセージ式では、[レシーバ 

  • 解決済

    swift カメラ起動時のカメラロール実装について

    現在、カメラアプリを作成しようとしております。 カメラの画面に、カメラロールを表示するボタンを追加しておりますが、 カメラロールを閉じた後、 画面が固まったままとなってし

  • 解決済

    スプライトキット admobで、表示と非表示を切り替える方法

    スプライトキットで、admobを実装したのですが、ページによっては非表示としたいと考えております。今のままではずっと表示されたままであり、表示と非表示を切り替えるやり方をご教示いた

  • 解決済

    ScrollViewのエラーメッセージ

    swiftでscrollViewを実装すているのですが、下記のメッセージの解消が出来なく苦戦しております。 self.scrollView.addSubView(imageV

  • 解決済

    【Swift】Viewの座標位置の変換がうまくいかない。

    前提・実現したいこと UIViewに枠線をつけ画面中央に配置しており、その中に収まっている部分のUIImagewのimageを取得したいのです。 Viewに収まっている部分をc

  • 解決済

    swift

    やりたいこと 画面全体を覆うViewをaddSubiewしたい 詰まってること NavigationBar UITabbar 画面内にこの二つがあって、それらを覆

  • 解決済

    Yahoo! iOSマップSDKの地図サイズを変更する

    実現したいこと YMKMapViewの表示サイズを変更する 現状 下記のソースコードを実装しておりますが、 CGRectのwidth及び、heightの値を変更し、ビル

  • 受付中

    拾ってきたTinderUIソースに、オリジナル画像を適用

    前提・実現したいこと オリジナルの写真を用いてTinderのような挙動にする できれば4枚以上で実装する 発生している問題・エラーメッセージ 'NSData'is no

同じタグがついた質問を見る

  • Swift

    5087questions

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

  • iOS

    2974questions

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

  • Swift 2

    1300questions

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