LoginSignup
12
8

More than 3 years have passed since last update.

SwiftUIでInstagram/Homeのデザインを表現

Last updated at Posted at 2019-09-05

はじめに

ここ最近SwiftUIを触っており、既存のアプリのデザインを真似てみようという試みのもと
第一回としてInstagram/Homeのデザインに着手してみたって話です。

完成形はgithubに上げているので記事の内容よりコードという方は以下リンクよりご確認ください!
書き方こっちの方が良いよ!などのアドバイスいただけると嬉しいです:relaxed:
InstagramHomeDesign_SwiftUI

InstagramのHome画面完成形

image.png

パーツに切り分ける

SwiftUIで作成するにあたりまずパーツごとに分解できそうな箇所を分けてみました。
こちらはUIKitを使用して作成する場合も同じですかね:sweat_smile:

StoryView:フォローしてるユーザのStoryを表示する
PostView:フォローしてるユーザの投稿を表示する

image3.png

Home画面に含まれる横縦のスクロール表現方法

UIKitでこのデザインを表現する場合
ベースの縦スクロールはTableViewもしくはCollectionView
Storyの横スクロールはCellに横向のCollectionViewを用意しておくと表現できそうですが、
今回SwiftUIではどうやって表現しているかについてです。

HomeView.swift
var body: some View {
        NavigationView {
            VStack {
                ScrollView(.vertical) {
                    ScrollView(.horizontal){
                        HStack(alignment: .center) {
                            ForEach(landmarkData) { landmark in
                                StoryView(landmark: landmark)
                            }
                        }.padding([.top, .leading, .trailing])
                    }
                    ForEach(landmarkData) { landmark in
                        PostView(landmark: landmark).padding(.top)
                    }
                }
            }
            .navigationBarTitle("Instagram", displayMode: .inline)
            .navigationBarItems(leading: self.leadingNavigationItems, trailing: self.trailingNavigationItems)
        }
    }

ScrollView(.vertical) {}でベースを縦スクロールにし、
StoryViewを表示している箇所をScrollView(.horizontal)で括り横スクロール可能にしてます。

さいごに

第二回のデザイン表現のためよく使うアプリのどのデザインを表現してみようか探し中:smile:

12
8
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
12
8