SwiftにてCustomViewを使ってUIAlertっぽいやつを作る

 

どうも3urpriseのヤマサキです。

 

今日はUIAlertっぽいやつを自分で作っていきます。

基本的なStoryboard操作と簡単なコードが書ける方が対象です。

だがしかし!ほとんど触ったことない方も手順通り進めていけば作れますので、アップルが用意したオブジェクトじゃなくて自分で色々作りたいって方は参考になるかと思います。

それでは始めます!

まずは新規プロジェクトを作成します。

作成したらプロジェクト内で右クリックしてNew File… を作成します。

スクショ001

スクショ002

スクショ003

 

ここからCustomViewのファイルを作ります。

名前はCustomViewとします。

スクショ005

スクショ006

同じようにxibのファイルもつくります。

スクショ007

 

ファイルが出来たらさっそくViewをカスタムしていきます。

まずはxibを選択して用意されているViewのサイズをアラートっぽいサイズに変更します。

SizeをFreedomにするとViewのサイズは変更できますので変更しましょう。

 

 

スクショ008

 

サイズは250×250の正方形で決め打ちします。

 

 

スクショ0010

 

 

次にFileオーナーをCustomViewクラスに変更します。

これを忘れると一生先に進めませんので必ずクラス変更してください。

 

 

 

スクショ0011

 

では好きなようにLabelやボタンなどをつけます。

 

 

スクショ0012

出来たら作成したViewをドラッグします。

 

スクショ0013

 

そしてコードを書いていきます。

詳しくはコメントに書いていますので参考にしてください。

Sponsored Link


 

 

スクショ0014

 

CustomViewはこれで終わり!

次はMainViewで作業します!

まずはボタンをつけます。

そしてCustomViewと同じサイズのUIViewを作ります。

出来たらアウトレット接続をするんですが、その前にUIViewのクラスをCustomViewに変えましょう。

これをしておかないと一生CustomViewが表示されません!

スクショ0015

スクショ0016

スクショ0018

 

スクショ0019

 

できました!

全ページのキャプチャーを載せておきます。

スクショ0020

スクショ0021

スクショ0022

スクショ0023

 

これでビルドすればほら!

スクリーンショット 2015-03-20 0.22.41

簡単だね!

このままじゃ寂しいので色々カスタムしてみた!

 

CustomAlert

 

それっぽくなったね!

最後にコードだけ載せておきます。

ViewController

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var _cutomView: CustomView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        _cutomView.delegate = self
        
        _cutomView.layer.cornerRadius = 30
        _cutomView.layer.borderWidth = 10
        _cutomView.layer.borderColor = UIColor.whiteColor().CGColor
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
    
    @IBAction func button(sender: AnyObject) {
        // 拡大するアニメーション
        AnimationWrap_3urprise.expansionMove(_cutomView)
        _cutomView.hidden = false
    }
}


extension ViewController: CustomViewDelegate {
    func buttonTap(bool:Bool, sender: CustomView) {
        // 縮小して消える
        AnimationWrap_3urprise.reductionMove(_cutomView)
    }
    func color(color:UIColor) {
        self.view.backgroundColor = color
    }
}

CustomView

import UIKit

class CustomView: UIView {

    @IBOutlet var _view: UIView!
    
    // アウトレット接続 (緑のView
    @IBOutlet weak var _myView: UIView!
    // 移譲先
    weak var delegate: CustomViewDelegate! = nil
    
    override func awakeFromNib() {
        // XIB読み込み
        let view = NSBundle.mainBundle().loadNibNamed("CustomView", owner: self, options: nil).first as UIView
        addSubview(view)
        
        _view.layer.cornerRadius = 30
    }
    @IBAction func button(sender: AnyObject) {
        // 内容
        delegate?.buttonTap(true , sender: self)
    }
    @IBAction func button2(sender: AnyObject) {
        
        delegate?.color(UIColor.orangeColor())
    }
}

/**
*  デリゲートはクラスのみ
*/
protocol CustomViewDelegate: class {
    func buttonTap(bool:Bool,sender:CustomView)
    func color(color:UIColor)
}

 

こんな感じで参考になれば幸いです。

 

 

Sponsored Link
ツイートツイート

SwiftにてCustomViewを使ってUIAlertっぽいやつを作る

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です