8
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

UIViewをベースにしたカスタムポップアップ【Swift3.0】

Last updated at Posted at 2016-11-29

完成見本

mihon.png


1. カスタムポップアップ xibファイル作成

メニュー:File→New→Fileと辿り、User InterfaceのViewファイルを選択します。ファイル名はPopupView.xibとしました。
2.png

2. カスタムポップアップ クラスファイル作成

メニュー:File→New→Fileと辿り、Cocoa Touch Classのテンプレを選択して、SubclassはUIViewを選択します。ファイル名はPopupview.swiftとしました。
1.png ※ 「Also create XIB file」をチェックすれば.swiftと.xibが同時に作成できますが、今回は別々にやってます。 ### 3. xibとクラスファイルの紐付け
左がPopupView.swift、右がPopupView.xibです。左サイドからPopupView.swiftを選択した後、オプションを押しながらPopupView.xibを選択すると図のような並びになるはずです。右画面のPopup Viewを選択(①)して、右側のCustom Class欄でPopupViewを選択(②)します。あとは通常通りコントロールを押しながらアウトレットとアクションの接続(③)をおこないます。今回BaseView(白バックの部分)をアウトレット接続してるのはコードで角を丸くするためです。OKボタンには閉じるアクションを割り当ててます。
3.png

// PopupView.swift

import UIKit

class PopupView: UIView {

    @IBOutlet weak var baseView:UIView!
    
    @IBAction func close(_ sender:UIButton) {
        self.removeFromSuperview()
        
    }
}

4. 実装

今回はviewDidLoad()内に書いてみました。実用するならサブルーチン化して呼び出すのがよいでしょう。ちなみにアルファ(透過度)の設定はインターフェースビルダーからでもできそうですが、そこで設定しちゃうとすべてのオブジェクトに適用されちゃう(継承しちゃう?)のでコードからおこなっています。
    // swift 3.0

    override func viewDidLoad() {
        super.viewDidLoad()
        
        //  カスタムポップアップ
        let popupView:PopupView = UINib(nibName: "PopupView", bundle: nil).instantiate(withOwner: self,options: nil)[0] as! PopupView
        
        // ポップアップビュー背景色(グレーの部分)
        let viewColor = UIColor.black
        // 半透明にして親ビューが見えるように。透過度はお好みで。
        popupView.backgroundColor = viewColor.withAlphaComponent(0.5) 
        // ポップアップビューを画面サイズに合わせる
        popupView.frame = self.view.frame

        // ダイアログ背景色(白の部分)
        let baseViewColor = UIColor.white
        // ちょっとだけ透明にする
        popupView.baseView.backgroundColor = baseViewColor.withAlphaComponent(0.7)
        // 角丸にする
        popupView.baseView.layer.cornerRadius = 8.0
        
        // 貼り付ける
        self.view.addSubview(popupView)


    }
8
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?