10
9

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.

Swift4でコードベースのレイアウトを作成する

Last updated at Posted at 2018-02-21

はじめに

Swiftに関してはまだ学習段階で、StoryBoardを使わずにUIを構築してみたいと思い調べてみました。
ドンピシャな記事がこちらだったのですが、Swift4には対応しておらず、諸々でエラーが出たので、そちらのバグを修正したものを書いていこうかと思います。

なお、こちらの記事を書いている @lovee さんには多大な感謝を申し上げますm(_ _)m

進め方として、@lovee さんの記事を参照して進め、エラーが出た際にこの記事と見比べていただければと思います。

MainView.swift

import UIKit

class MainView: UIView {
    // ラベルのクラスを宣言
    let mainLabel: UILabel
    
    override init(frame: CGRect) {
        
        // MainViewのフレームサイズを定数に代入
        let mainViewFrame = frame
        
        // labelのサイズを設定
        let mainLabelSize = CGSize(width:240, height:30)
        
        // MainViewのフレームサイズとラベルのサイズからラベルがちょうど中央に来るように場所を計算する
        let mainLabelOrigin = CGPoint(
            x:(mainViewFrame.width - mainLabelSize.width) / 2,
            y:(mainViewFrame.height - mainLabelSize.height) / 2
        )
        
        // ラベルのフレームを定数に設定しておく
        let mainLabelFrame = CGRect(x: mainLabelOrigin.x, y: mainLabelOrigin.y, width: mainLabelSize.width, height: mainLabelSize.height)
        
        // mainLabelを作る
        mainLabel = UILabel(frame: mainLabelFrame)
        
        // mainLabelの表示テキストを設定
        mainLabel.text = "Change to Text"
        
        // mainLabelの表示テキストのセンタリングを設定
        mainLabel.textAlignment = .center
        
        // mainLabelの設定が終わったので、親クラスを初期化
        super.init(frame: frame)
        
        // MainView クラスの背景色を白に設定
        self.backgroundColor = UIColor.white
        
        // MainViewにmainLabelを表示させる
        self.addSubview(mainLabel)
        
    }
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

ViewController.swift

import UIKit

class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        let mainView = MainView(frame: UIScreen.main.bounds)
        
        self.view.addSubview(mainView)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}

AppDelegate.swift

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        // アプリウィンドウの設定
        self.window = UIWindow(frame: UIScreen.main.bounds)
        
        // ウィンドウをヴィジブルにする
        self.window?.makeKeyAndVisible()
        
        // ウィンドウのrootViewControllerをviewControllerに設定する
        self.window?.rootViewController = viewController
        
        return true
    }
    // 以下省略
}
10
9
7

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
10
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?