LoginSignup
22
21

More than 5 years have passed since last update.

XIB使ってカスタムViewを表示

Last updated at Posted at 2017-09-18

xibファイルでViewの作成とよくあることなのですが、自分のお気に入りの方法がよく見つからないので、すぐに見つけられるようにとここに書いとくことにしました。

今回作成のものはとにかくsimpleなものなのであまりそのまま使うことはないかと思いますが、カスタマイズはしやすいものになっているのではないかと思っています。

たくさん写真も使ったので使ったことない方もわかってくれると願って!

では:shamrock:
・最初にプロジェクトは作ると思うので、それはさておき。
・プロジェクト内にUIViewを継承したクラスを作ります。
スクリーンショット 2017-09-18 13.29.53.png
・次にまたNewFileで下図のViewをクリック。
スクリーンショット 2017-09-18 13.30.06.png
・名前は先ほど作ったクラスと同じ名前にします。
スクリーンショット 2017-09-18 13.30.20.png
・次に作ったXIBファイルのViewのクラスを下のように選択します。
スクリーンショット 2017-09-18 13.31.04.png
・ここです。(拡大してみました。)
スクリーンショット 2017-09-18 13.31.12.png
・次に先ほどUIViewを継承したクラスのコメントアウトしてあるところがあるので、
スクリーンショット 2017-09-18 13.31.29.png
・とります。
スクリーンショット 2017-09-18 13.31.41.png
・次にXibファイルの先ほどのViewのところにViewを持ってきて大きさの制約をつけます。今回は200です。この数字はあとで使うので忘れないでください。Viewは必ず左と上にぴったり揃えるよう配置してください。このあと大きさの制約だけだと赤いの出てくるのでそこらへんは適当にぽちぽちやって調節してください。と言ったもののこの図だとchekをつけてないのですが、0と書いてある上の部分と左の部分にもチェックを入れれば赤いのは出てこないはずです。
スクリーンショット 2017-09-18 13.33.29.png
・今回ちゃんと中に入れたい部品がわかるたまにLabelを貼りました。
スクリーンショット 2017-09-18 13.34.10.png
・次にコメントアウト先ほど外した中に以下のようにサイズと位置を指定します。サイズは先ほどXIBのとことで設定した数に、位置は今回真ん中になるように設定しました。
スクリーンショット 2017-09-18 13.36.21.png

・次に先ほどのlabelを他のクラスでカスタマイズしたいことあると思うので接続しておきます。
スクリーンショット 2017-09-18 13.37.18.png
・白だとあとで表示した時にわかりにくいので背景色を変えておきます。
スクリーンショット 2017-09-18 13.38.02.png
・いよいよ使いところでの貼り付け作業です。下図のように書いてもらえれば下図のように表示されます。
スクリーンショット 2017-09-18 13.40.58.png
・ラベルにアクセスしたいのならこんな感じで。
スクリーンショット 2017-09-18 13.42.07.png

で、写真だとみにくかったリモするので、code貼っておきます。

ViewController.swift
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        var viewsample1:sampleView
        viewsample1 = Bundle.main.loadNibNamed("sampleView", owner: self, options: nil)!.first! as! sampleView
        viewsample1.bottomlabel.text = "下"

        self.view.addSubview(viewsample1)

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()

    }


}


sampleView.swift
import UIKit

class sampleView: UIView {
    @IBOutlet weak var topLabel: UILabel!
    @IBOutlet weak var bottomlabel: UILabel!


    // Only override draw() if you perform custom drawing.
    // An empty implementation adversely affects performance during animation.
    override func draw(_ rect: CGRect) {
        let selfheight:CGFloat = 200
        let selfwidth:CGFloat = 200

        self.frame.size.height = selfheight
        self.frame.size.width = selfwidth


        let superScreen:CGRect = (self.window?.screen.bounds)!

        self.frame.origin.x = (superScreen.width/2) - (selfwidth/2)
        self.frame.origin.y = (superScreen.height/2) - (selfheight/2)

    }


}

補足:
やらなくても表示はされるのですがxibのViewを表示しているものぴったしにしたい場合は、一度xib下の画像のようにアートインスペクタのSizeをFreeformに変換し
スクリーンショット 2017-10-15 5.43.47.png

そうするとサイズを表示するところの編集が可能になるので、xibのサイズをWidthとHeightに入れてあげれば出来上がりとなります!
スクリーンショット 2017-10-15 5.43.54.png

最後に動かしたいのためにgithubのURL貼っておきます。
https://github.com/sachiko-kame/swift.sample24

基礎からコツコツ:sunny:

22
21
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
22
21