LoginSignup
3
1

More than 1 year has passed since last update.

SwiftUIはweb開発に近いところを感じた

Last updated at Posted at 2021-08-12

記事の期間が空いてしまいました。また最近アプリを作ってます。今度は仕事でSwiftUIを使う環境になったので一人で勉強した僅かなアドバンテージと一緒に仕事に励んでいます。Storyboardと比べるとやっぱりSwiftUIの方が簡単かなと思います。

私にとってSwiftUIはHTMLCSSに近い言語感覚を持っているので、どのくらい記事を書けるかわかりませんが感じたことをまとめていきたいと思います。

HStack, VStack, ZStackについて

前回の記事でHStackとかで囲わないと2行以上、2列以上テキストなどを置けないということに気がついたのですが、囲わないといけない理由は探し出せていません。理由を知りたい気持ちはありますがそういうもんだと思って開発しています()

このHStack, VStack, ZStackは、web開発のイメージと近いところがありました。

VStackのCSSイメージ

VStackはwebでいうブロック要素を縦に並べる挙動に見えました。SwiftUIでは自動的にcenteringされているのでcssで表記するとこんなイメージかな。

<div class="vstack">
    <p>A</p>
    <p>B</p>
    <p>C</p>
</div>
.vstack {
    text-align: center;
}

SwiftUI

HTML,CSS

vstack.png

HStackのCSSイメージ

HStackは要素を横並びにするので私が好きなflexの挙動に見えました。あと並んだ要素は真ん中に寄るのでjustify-contentのcenterが自動的についてるイメージです。

<div class="hstack">
    <p>A</p>
    <p>B</p>
    <p>C</p>
</div>
.hstack {
    display: flex;
    justify-content: center;
}

SwiftUI

HTML,CSS

hstack.png

ZStackのCSSイメージ

ZStackはPhotoshopとかで言うレイヤーをイメージしています。cssだとpositionのrelativeとabsoluteをセットしてz-indexで調整という感じですが、ZStackの要素は下に書いてある要素が上のレイヤーに来るのでhtmlで表現すると複雑になりました。

<div class="zstack">
    <p>A</p>
    <p>B</p>
    <p>C</p>
</div>
.zstack {
    position: relative;
    z-index: 0;
}

.zstack p {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}

.zstack p:nth-child(1) {
    z-index: 1;
}

.zstack p:nth-child(2) {
    z-index: 2;
}

.zstack p:nth-child(3) {
    z-index: 3;
}

SwiftUI

HTML,CSS

zstack.png

元々HTMLやCSSで並べていくのが楽しいのでSwiftUIの3つも近しいものを感じたので開発イメージが付きやすいです。

参考

https://developer.apple.com/documentation/swiftui/vstack
https://developer.apple.com/documentation/swiftui/hstack
https://developer.apple.com/documentation/swiftui/zstack

3
1
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
3
1