LoginSignup
9
8

More than 1 year has passed since last update.

[SwiftUI] どうせなら、かっこよく、Glassmorphism

Last updated at Posted at 2021-10-22

はじめに

SwiftUIはカスタマイズも簡単なので、色々なUIデザインを試してみることができます。そこで今回はGlassmorphism風のUI作りを紹介していきます。

Glassmorphismって?

簡単にいうと、すりガラス風のUIのことです。こちらのサイトはCSS用のものですが見ていただければ大体のイメージはつかんでもらえるかと思います。

Glassmorphism CSS Generator
Glass.ping.png

できたもの

まずは完成品をご覧ください。プロのデザイナー!というわけではないのでちょっと不十分なところもありますが、SwiftUIだけでとりあえずこんなものができます。
名称未設定のデザイン-18.png

コードと使い方

半透明の背景

GlassBackGround.swift

import SwiftUI

struct GlassBackGround: View {

    let width: CGFloat
    let height: CGFloat
    let color: Color

    var body: some View {
        ZStack{
            RadialGradient(colors: [.clear, color],
                           center: .center,
                           startRadius: 1,
                           endRadius: 100)
                .opacity(0.6)
            Rectangle().foregroundColor(color)
        }
        .opacity(0.2)
        .blur(radius: 2)
        .cornerRadius(10)
        .frame(width: width, height: height)
    }
}

RadialGradientRectangleを重ね、透明度もちょっとずらしています。もう少しスマートな解決法があるような気もしますが、色々と試行錯誤した結果、これが一番上のサイトのような見た目に近くなりました。

使い方

GlassView.swift

import SwiftUI

struct GlassView: View {

     var body: some View {
            VStack {
                Image(systemName: "person.circle")
                    .font(.largeTitle)
                Text("Glass")
            }.foregroundColor(.white)
                .background(
                    GlassBackGround(width: 100, height: 100, color: .black)
                        .shadow(color: .black, radius: 2, x: 2, y: 2)
                )
    }
}

背景をグラデーションにしたり、パターンの模様をつけておいたりすると透けている感じがよくわかります。GlassPlaceHolderの上に表示するものには影をつけていませんが、これは上記のサイトの見本を参考にしたものです。

まとめ

SwiftUIそのままよりも格段にカッコイイデザインになりました。アプリの背景やUIの配置によって細かい設定を変えた方が良い時もありますが、大体は上のコードくらいで対応できそうです。

立体感のある画面を作れるのがGlassmorphismのいいところで、個人的には結構お気に入りです。みなさんもぜひ挑戦してみてください。

 

作成中のアプリなどは以下に掲載しているので、よかったらこちらもよろしくお願いします☺️

Twitter

note

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