追新SwiftUI做个2020最火的Neumorphism风格按钮_知识大胖的博客-程序员宅基地

项目完成后,您将能够制作下面到效果

41085-62fc6c6941f01e89.png
image.png

41085-ab460de37d174bca.gif
Jietu20200223-125504.gif

本文学到技能

阴影效果制作
下面代码就是实现浮雕到核心逻辑,左上角亮右下角暗,然后背景,按钮背景,按钮前景颜色都一样,最终浮雕效果就出来了。

.shadow(color: Color.white, radius: 8, x: -8, y: -9)
.shadow(color: Color(red: 163/255, green: 177/255, blue: 198/255), radius: 8, x: 9, y: 9)

41085-63eebae33fc1bace.png
image.png

什么是Neumorphism

一图胜千言


41085-99d1ff289ba920b9.jpg
Neumorphism风格
41085-f60f238cf0fad0f9.gif
Neumorphism风格

2020年国外设计界开始流行一种叫 Neumorphism 的设计风格,也有人称为 Soft UI。Neumorphism 风格被的理解为新一代的拟物风潮,我们其实可以简单的叫他浮雕效果。

实战做个Neumorphism按钮

1、创建一个项目
让我们从打开Xcode 11并创建一个Single View App开始,项目名为newButton。

41085-867f06422b850584.png
image.png

2、现在有了新的干净视图,让我们开始吧。删除代码并添加以下内容:


41085-62fc6c6941f01e89.png
漂亮的灰色界面

我们制作了一个漂亮的灰色界面

import SwiftUI

struct ContentView: View {
    var body: some View {
        ZStack {
            Color(red: 224/255, green: 229/255, blue: 236/255)
        }
        .edgesIgnoringSafeArea(.all)
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
41085-3f57711065f17ec2.png
预览效果

3、增加按钮
接下来,添加按钮,并在按钮中添加图像。将框架的宽度和高度设置为80。

import SwiftUI

struct ContentView: View {
    var body: some View {
        ZStack {
            Color(red: 224/255, green: 229/255, blue: 236/255)
            
            Button(action: {}) {
                Image(systemName: "heart.fill")
                .resizable()
                .frame(width: 80, height: 80)
                
            }
        }
        .edgesIgnoringSafeArea(.all)
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

现在,我们应该有这样的效果


41085-a685eaf288b7b474.png
image.png

4、让我们添加一些空间以给heart图片,并给按钮侧面留出空间,最后让边缘变圆

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/iCloudEnd/article/details/104473622

智能推荐

error: 'CONFIG_SYS_SDRAM_BASE' undeclared _独角鲸的博客-程序员宅基地

移植的第一步当然是下载最新版本的uboot源码,下载地址如下:ftp://ftp.denx.de/pub/u-boot/u-boot-2010.12.tar.bz2进入相应路径:cd /home/bsc解压缩:tar jxvf u-boot-2010.12.tar.bz2 进入生成的文件夹,在uboot主目录:cd u-boot-2010.12首先编译下看看是否可以编译成功(交叉编译器

施密特正交化的几何意义与推导_施密特正交化几何意义_异次元的归来的博客-程序员宅基地

对于一组向量,有时候我们需要对其进行正交化处理,也就是说,该组向量中任意两个向量都是互相垂直的。那么,要怎么做呢?假设只有两个向量,v⃗0\vec v_0v0​和v⃗1\vec v_1v1​,正交化的几何示意图如下所示。假设正交化之后的向量为w⃗0\vec w_0w0​和w⃗1\vec w_1w1​,那么由图可知,可得w⃗0=v⃗0\vec w_0 = \vec v_0w0​=v0​,且有:..._施密特正交化几何意义

脑网络| 分析相关概念详解(汇总)_脑网络 节点相关_oh__NO的博客-程序员宅基地

“小世界”网络.研究表明, 规则网络具有较高的集群系数和较长的最短路径长度, 与此相反,随机网络拥有较低的集群系数和较短的最短路径长度.兼具高集群系数和最短路径长度的网络称为“小世界”网络.将随机网络作为基准,如果所研究网络相对于随机网络具有较大的集群系数和近似的最短路径长度, 即γ = Creal/Crandom>> 1, λ= Lreal/Lrandom~ 1 (其中脚标r..._脑网络 节点相关

错误: 未能完成程序集的安装(hr = 0x8007000b)。探测终止。_xsm1217的博客-程序员宅基地

Winform运行程序抛出异常:未能加载文件或程序集“Geckofx-Core, Version=29.0.17.0, Culture=neutral, PublicKeyToken=3209ac31600d1857”或它的某一个依赖项。试图加载格式不正确的程序。日志显示:日志: 此绑定从 default 加载上下文开始。日志: 正在使用应用程序配置文件: D:\Project\**\**\bin\Debug\**.exe.Config日志: 使用主机配置文件:日志: 使用 C:\Wind_未能完成程序集的安装(hr = 0x8007000b)。探测终止

LeetCode——21.合并两个有序链表_李霁明的博客-程序员宅基地

文章目录21.合并两个有序链表题目代码1、递归方法2、迭代方法小结:21.合并两个有序链表来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/merge-two-sorted-lists著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。题目将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1-

随便推点

Java秒杀系统方案优化 -第4章 秒杀压测-Jmeter压力测试_Chenzj_的博客-程序员宅基地

1. 下载Jmeter压力测试Jmeter是一个压力测试的一个工具,下载地址可以在百度直接搜索Jmater,或者点击Jmeter下载地址去到Apache下载 下载会看到下列的文件夹: 2.使用压力测试工具 (windows下)进入BIN目录点击jmeter.bat就会出现图像化的压力测试工具,如下图: 然后进行以下操作添加线程组 然后添加默认的HTTP请求配置 ...

Mysql——分组统计_mysql分组计数_王同学要变强的博客-程序员宅基地

Mysql——分组统计 一条龙服务_mysql分组计数

解决宝塔面板找不到站点_负载均衡 找不到对应的站点!_啊道~的博客-程序员宅基地

方法一清空浏览器缓存,通过Ctrl+Shift+delete,清理浏览器缓存弄好的,供参考方法二在宝塔页面添加两个站点一个加www,一个不加综上这两个方法能解决百分之90找不到站点。_负载均衡 找不到对应的站点!

缓存的意义及EhCache的使用_萧尽悠然的博客-程序员宅基地

缓存的作用 缓存(Cache)是一块为提升系统性能而开辟出来的内存空间。其主要作用是暂存数据处理结果,并提供下次访问使用。在很多场合,数据的处理或者数据获取可能非常费时,当对这个数据的请求量很大时,频繁的数据处理会消耗大量资源。缓存的作用就是将这些来之不易的数据存储起来,当再次请求此数据时,直接从缓存中获取而省略数据处理流程,从而降低资源的消耗提高响应速度。EhCache配置文件&lt...

CronExpression 表达式详解_Ensk的博客-程序员宅基地

参数序号参数名是否可选1Seconds否2Minutes否3Hours否4Day-of-Month否5Month否6Day-of-Week否7Year是例如:"0 0 12 ? * WED" 在每星期三下午 12:00 执行其中每个元素可以是一个值 (6),一个连续区间 (9-12),一个间隔时间(8-1..._cronexpression

Spring多数据源管理_wodetiankong516的博客-程序员宅基地

Spring多数据源管理环境1. Tomcat 6.0.282. Spring 2.5, SpringSide 2.53. Hibernate业务需求1. Spring 管理多个数据源,针对通应用有效促进数据库分库,分用户2. 分布式事务控制3. 通过JNDI来获取数据源,程序员无需关系数据库相关配置4. 抽取低层框架,用

推荐文章

热门文章

相关标签