0
0

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 1 year has passed since last update.

SwiftLayout: UIView DSL library

Last updated at Posted at 2022-02-18

普通にUIKitの基本APIを使ってヴューを作成するとき普段は下のような形になるのが大抵でしょ。

let body: UIView
let profileImage: UIView
let nameLabel: UILabel

body.addSubview(profileImage)
body.addSubview(nameLabel)

NSLayoutConstraint.active([
 profileImage.topAnchor.constraint(equalTo: body.topAnchor),
...
])

まあview 1つや2つ程度簡単なものは上のような基本のAPIを使ってもよろしいでしょう。でもたとえピューが10個ならどうですか。その上ビューの関係も複雑で後でビューの関係に入りファクトリーが必要オフになったら恐ろしい状態になりますね。ここでifやenumまでひつようなじょうきょうを目の前にそたら諦めてSwiftUIが欲しくなりまう。

ここでこのライブラリーをご紹介させていただきたいと思います。
SwiftLibraryは基本的にSwiftのresultBuilderとUIView, NSLayoutConstraintのAPIを組み合わせて下の形でUIView間の結合、 NSLayoutConstraintの作成、後、前の二つの管理の通合をもっと楽で見やすく作成出来ように手伝う宣言形ライブラリーです。

body {
 profileImage.anchors { // body.addSubview(profileImage)
  Anchors(.leading, .top, .trailing) // add lots of anchors or layout constraint
 }
 nameLabel.anchors {
  Anchors(.top).equalTo(profileImage, attribute: .bottom)
  Anchors(.leading, .bottom, .trailing)
 }
}

確かに見やすくとなるんだと思いますが、他の方はどうでしょうか。

0
0
1

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?