LoginSignup
6
6

More than 5 years have passed since last update.

UIViewのビューとレイアウトを分離する「MOAViewLayout」

Last updated at Posted at 2014-08-31

MOAViewLayout

MOAViewLayoutとは?

UIView を拡張したことで簡潔にレイアウト部分の実装を可能にしたiOS用のモジュールです。

このモジュールでレイアウト部分を実装することにより、ビューとレイアウトの実装を分離することができます。

ダウンロード

使い方

1.ダウンロードした以下ファイルをプロジェクトに追加

  • MOAViewLayout.swift
  • UIView+MOAViewLayout.swift

2.MOAViewLayoutオブジェクトの実装

let layout = MOAViewLayout()
let barHeight : CGFloat = 40

// ヘッダー部分のレイアウトを実装
layout["header"] = {
    view, orientation in
    return CGRectMake(
        0,
        0,
        view.bounds.size.width,
        barHeight
    )
}

// フッター部分のレイアウトを実装
layout["footer"] = {
    view, orientation in
    return CGRectMake(
        0,
        view.bounds.size.height-barHeight,
        view.bounds.size.width,
        barHeight
    )
}

3.親のUIViewに3で実装したMOAViewLayoutを適用する

parentView.setViewLayout(layout)

4.MOAViewLayoutを適用した親UIViewのsubviewにレイアウト用のIDを適用し、addSubviewする

let headerView = UIView()
headerView.setViewLayoutID("header")
parentView.addSubview(headerView)

let footerView = UIView()
footerView.setViewLayoutID("footer")
parentView.addSubview(footerView)

実行

以下のように subview に対してレイアウトIDを適用しただけでヘッダー/フッターのレイアウト領域が反映されていることが分かります。

回転にも対応

課題

  • view.setViewLayout(layout)としていますが、本当は view.viewLayout = layout としたいです

おわりに

モジュールとしての要望・意見・突っ込みありましたら、何でも受け付けますのでお待ちしてます。

6
6
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
6
6